マルチコンテキストコアデータに苦労しているので、助けていただければ幸いです。
同期操作が終了すると、このブロックは次のように呼び出されます。
[[SyncEngine sharedEngine]setFinishedSyncCompletionBlock:^{
//---setting FRC to nil did refresh tableview but it is kinda slow
// self.fetchedResultsController=nil;
[self loadRecordsFromCoreData];
[self.tableView reloadData];
}];
そして、ここで、新しい管理対象オブジェクトがコンテキスト内にあることがわかります。ただし、[self.tableViewreloadData]を呼び出します。この後、テーブルビューが更新されないか、(void)controllerDidChangeContent:(NSFetchedResultsController *)controllerが起動しません。
- (void)loadRecordsFromCoreData {
NSLog(@"here loadRecordsFromCoreData");
[self.managedObjectContext.parentContext performBlock:^{
//---this is also a trial for resetting FRC
// [self.managedObjectContext reset];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Event"];
// Edit the sort key as appropriate.
fetchRequest.sortDescriptors = @[ [[NSSortDescriptor alloc] initWithKey:@"timeStamp" ascending:NO] ];
NSArray *objects = [self.managedObjectContext.parentContext executeFetchRequest:fetchRequest error:NULL];
NSArray *objectIDs = [objects valueForKey:@"objectID"];
[self.managedObjectContext performBlock:^{
NSArray *objects = [self.managedObjectContext objectsWithIDs:objectIDs];
// self.fetchedResultsController.managedObjectContext = self.managedObjectContext;
NSLog(@"objects: %lu", (unsigned long)objects.count);
}];
}];