NSFetchedResultsController に接続されたテーブル ビューがあります。
self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request
managedObjectContext:self.database.managedObjectContext
sectionNameKeyPath:nil
cacheName:nil];
次のようなバックグラウンド コンテキストでエンティティを作成します。
NSManagedObjectContext *backgroundContext;
backgroundContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
backgroundContext.parentContext = document.managedObjectContext;
[backgroundContext performBlock:^{
[MyAPI createEntitiesInContext:backgroundContext];
NSError *error = nil;
[backgroundContext save:&error];
if (error) NSLog(@"error: %@",error.localizedDescription);
[document.managedObjectContext performBlock:^{
[document updateChangeCount:UIDocumentChangeDone];
[document.managedObjectContext save:nil];
}];
現在、新しいデータを取得するたびに (および上記のようにエンティティを挿入/更新するたびに)、NSFetchedResultsController が正常に機能しません。特に、(新しいエンティティを作成するのではなく) 常に 1 つのエンティティを更新していますが、テーブル ビューには 2 つのエンティティが表示されます。アプリを再起動すると、正しく表示されます。
self.database.managedObjectContext でエンティティ ([MyAPI createEntities]) の作成を実行すると、すべて正常に動作します。
私は何を間違っていますか?私はこれで何時間も立ち往生しています。