核心数据保存崩溃
问题描述:
我有一个UITableView
从CoreData
提取数据使用FetchedResultsController
它注册的数据更新。核心数据保存崩溃
在第二个线程上,我从服务器下载数据并更新相同的数据(由UITableView
使用)。更新并不复杂,它只是更新实体的BOOL字段。
当我调用保存对对象的情况下,我得到这个异常:NSInternalInconsistencyException
,原因是
"Failed to process pending changes before save. The context is still dirty after 100 attempts. ..."
如果我不更新后正确的,但只在当时救当应用程序即将终止,应用程序运行正常,并且UITableView
被正确更新并且数据被持久化。
关于为什么可能会发生的任何指针?难道我做错了什么?
答
受管对象上下文不是线程安全的。你对每个线程有单独的MOC
吗?
如果是这样,我认为正确的模式是从背景NSManagedObjectDidSaveNotifications
注册MOC
,这样你可以做的主要MOC
一个mergeChangesFromContextDidSaveNotification
(主线程)。这将使您的MOCs
保持同步;它不会自动发生。
哦...我从一个类似CoreDataUtil类中保留一个单例MOC。现在感觉很蠢。 @ _ @ 一个问题:从一个MOC保存的变化会反映在另一个MOC?谢谢!!! – Justin 2010-06-22 03:45:46
增加了一些信息 – admanimal 2010-06-22 04:40:16