iphone - 核心数据保存崩溃

标签 iphone ios core-data concurrency

我有一个 UITableView,它使用 FetchedResultsControllerCoreData 获取数据,并注册数据更新。

在第二个线程中,我从服务器下载数据并更新相同的数据(由 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/

相关文章:

iphone - 我无法理解iOS6中的旋转机制

iphone - Google + 分享收到错误提醒

ios - 按一个属性分组,同时使用核心数据检索更多属性

ios - Swift 中的子类错误 "EXC BAD ACCESS"

iOS - 如果设备上有 Google 应用程序,Google 登录失败

swift - 保存/获取核心数据时出现 SIGABRT 错误

iphone - CoreData 向实体行添加新关系

iphone - 让应用程序识别 "the right answer"

iphone - iOS应用场景信用卡信息加密

ios - 如何快速呈现来自外部框架的 View Controller ?