我有NSFetchedResultsController
从NSMainQueueConcurrencyType
的托管对象上下文中获取结果。我还有另一个托管对象上下文,它共享NSPersistentStoreCoordinator
NSPrivateQueueConcurrencyType
的{{1}}。
所有更改都在背景上下文中进行,并使用NSManagedObjectContextDidSaveNotification
传播到主要上下文。
我在按here所述的方式获取某些更改以触发NSFetchedResultsControllerDelegate
方法时遇到了一些问题,但即使解决了这个问题,我发现fetchedObjects
有时会返回包含重复对象的错误数据。< / p>
我能找到的唯一解决方法是向controllerDidChangeContent
添加performFetch调用:
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller {
[self.tableView endUpdates];
// fetchedObjects is incorrect unless I refetch here...
[controller performFetch:nil];
}
但这对我来说似乎是一种低效的黑客攻击。每次数据发生变化时,我都会运行整个查询。我还在我的NSFetchedResultsController
中禁用了所有缓存,以备记录。