Ich habe eine funktionierende UITableView
unterstützt von Core Data
.geholtObjects ist Null nach performFetch, aber TabelleView hat Daten
ich Umsetzung bin jetzt ein Merkmal, dass, wenn die Tabelle leer ist, deaktiviere ich die rightBarButtonItem
:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear: animated];
self.navigationItem.rightBarButtonItem.enabled = self.fetchedResultsController.fetchedObjects ? YES : NO;
}
Aber auch wenn die Tabelle Artikel, self.fetchedResultsController.fetchedObjects
gibt nil zurück, so wird die Taste immer deaktiviert.
Ich rufe performFetch
in viewDidLoad
.
Ich habe diesen Code in ViewDidLoad versucht, aber das gleiche passiert.
Warum ist self.fetchedResultsController.fetchedObjects
Null, auch wenn die Tabelle ausgefüllt ist?
EDIT hinzugefügt mehr Code
Artikel sofort in ein Kind Kontext erzeugt werden, bevor die Tabelle zeigt. Derselbe Kontext wird für die fetchRequest
verwendet.
Die Elemente befinden sich definitiv im Kontext, da die Tabelle mit den Elementen im untergeordneten Kontext gefüllt wird. Wenn Sie jedoch viewWillAppear
aufrufen, ist self.fetchedResultsController.fetchedObjects
immer noch Null. Diese
ist, wie ich performFetch
nennen (in viewDidLoad
):
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
NSError *error = nil;
if (![self.fetchedResultsController performFetch: &error])
{
NSLog(@"Failed to perform fetch: %@", error);
}
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableView reloadData];
});
});
ich den Kontext speichere vor dem VC zeigt.
fügen Sie bitte Code aufrufen. –