我有UITableView
使用CoreData
从FetchedResultsController
获取数据,并注册数据更新。
在第二个线程上,我从服务器下载数据并更新相同的数据(UITableView
使用的数据)。更新并不复杂,它只是更新实体的BOOL字段。
当我调用对象上下文的保存时,我得到了这个例外:NSInternalInconsistencyException
,原因是
"Failed to process pending changes before save. The context is still dirty after 100 attempts. ..."
如果我在更新后立即保存,但仅在应用程序即将终止时保存,则应用程序运行良好,UITableView
已正确更新,数据将保持不变。
任何关于为什么会发生这种情况的指针?我做错了吗?
答案 0 :(得分:1)
托管对象上下文不是线程安全的。每个帖子都有一个单独的MOC
吗?
如果是这样,我认为正确的模式是从后台NSManagedObjectDidSaveNotifications
注册MOC
,以便您可以在主mergeChangesFromContextDidSaveNotification
上执行MOC
(来自主线)。这将使您的MOCs
保持同步;它不会自动发生。