バックグラウンドスレッドで更新される とNSFetchedResultsController
組み合わせてを使用しています。UIManagedDocument
このチュートリアルで説明されているとおりに NSFetchedResultsController を設定しました: How To Use NSFetchedResultsController
ビューコントローラーのデリゲート_fetchedResultsController.delegate = self
とプロトコルを に設定しましたNSFetchedResultsControllerDelegate
。
私のコードは、起動後にデータをロードすると正常に動作します。ただし、バックグラウンド スレッドでデータを処理して保存するたびにNSFetchedResultsController
、TableView は更新されません。特に、NSFetchedResultsController のデリゲート メソッド-controllerWillChangeContent:controller
などが呼び出されることはありません。
SQLite データベースにデータが正しく含まれていることを再確認しました。これは、View Controllerでデータを処理して保存する方法です。
[backgroundContext performBlock:^{
[company parseAttributesFrom:xmlStr inManagedObjectContext:backgroundContext]; //self.managedDocument.managedObjectContext
NSError *error = nil;
[backgroundContext save:&error];
if (error) NSLog(@"error: %@",error.localizedDescription);
[self.managedDocument.managedObjectContext performBlock:^{
NSError *error = nil;
[self.managedDocument.managedObjectContext save:&error];
if (error) NSLog(@"error: %@",error.localizedDescription);
}];
[self.managedDocument saveToURL:self.managedDocument.fileURL forSaveOperation:UIDocumentSaveForOverwriting completionHandler:NULL];
[self.managedDocument updateChangeCount:UIDocumentChangeDone];
}];
基になるデータが変更されたときに、NSFetchedResultsController が TableView を自動的に更新するようにするにはどうすればよいですか?
ご協力ありがとうございました!