我将 a与在后台线程中更新的aNSFetchedResultsController
结合使用。UIManagedDocument
我已经完全按照本教程中的描述设置了 NSFetchedResultsController:如何使用 NSFetchedResultsController
我已将_fetchedResultsController.delegate = self
视图控制器的委托和协议设置为NSFetchedResultsControllerDelegate
.
我的代码在启动后加载数据时工作正常。但是,只要在后台线程中处理并保存了数据,它就NSFetchedResultsController
不会更新 TableView 。特别是,NSFetchedResultsController 的委托方法-controllerWillChangeContent:controller
等永远不会被调用。
我已经仔细检查了 SQLite 数据库是否正确包含数据。这就是我在视图控制器中处理和保存数据的方式:
[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?
感谢您的帮助!