我有一个 UITableView
,它使用 FetchedResultsController
从 CoreData
获取数据,并注册数据更新。
在第二个线程中,我从服务器下载数据并更新相同的数据(由 UITableView
使用)。更新并不复杂,只是更新实体的一个BOOL字段。
当我调用对象上下文上的保存时,出现此异常:NSInternalInconsistencyException
,原因是
"Failed to process pending changes before save. The context is still dirty after 100 attempts. ..."
如果我在更新后不立即保存,而是仅在应用程序即将终止时保存,则应用程序运行良好,UITableView
会正确更新,并且数据会保留。
有任何关于为什么会发生这种情况的指示吗?我做错了什么吗?
最佳答案
托管对象上下文不是线程安全的。每个线程都有单独的 MOC
吗?
如果是这样,我相信正确的模式是从后台MOC
注册NSManagedObjectDidSaveNotifications
,这样您就可以在main MOC
(来自主线程)。这将使您的 MOC
保持同步;它不会自动发生。
关于iphone - 核心数据保存崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3090039/