我正在使用两个MOC,一个用于主线程,另一个MOC用于后台线程。 在主线程上,我有一个UITableView与FRC(NSFetchedResultsController)一起工作。CoreData在从后台保存操作期间无法完成故障MOC
偶尔我运行一次大规模的保存操作,删除所有对象并建立几百个新对象...此时我想在主线程中使用UITableView刷新其数据(使用FRC明显)。因此,主MOC注册到NSManagedObjectContextDidSaveNotification通知(从后台MOC收到)并在该阶段运行mergeChangesFromContextDidSaveNotification以确保UITableView相应地更新。
这一切都正常工作,直到我试图在保存操作中滚动UITableView。当我尝试滚动视图时,“coredata无法完成错误”引发异常。这是FRC仍然保留已删除对象的结果(在主MOC上收到来自NSManagedObjectContextDidSaveNotification通知的mergeChangesFromContextDidSaveNotification之前,保存操作仍在运行)。 这是收到mergeChangesFromContextDidSaveNotification后,保存操作和UITableView更新之间的某种“竞争条件”。
与这两个MOC合作并照顾FRC的正确方法是什么?因此它能够应对这种情况?
谢谢。我读过这篇文章......考虑到我描述的“丢弃这个对象”的架构和场景,最好的方法是什么? – Joel