【发布时间】:2010-04-16 13:38:06
【问题描述】:
我的问题类似于this one。
背景
我正在使用 NSOperations 在核心数据存储中创建大量对象以加快速度。
我已遵循所有 Core Data 多线程规则 - 我有一个持久存储协调器和一个托管对象上下文,每个线程在保存时合并回主托管对象上下文。
问题
当一次运行的线程数超过 1 时,我在保存我的核心数据存储时收到异常记录:
NSExceptionHandler has recorded the following exception:
NSInternalInconsistencyException -- optimistic locking failure
我的尝试
我创建新实体的代码非常复杂 - 它使实体与可能在单独线程中创建的其他实体有关系。
如果我用一些非常简单的代码替换我的对象创建例程,只是创建不相关的条目,那么一切都会完美运行。
最初,除了例外,我收到一个保存错误,说核心数据由于合并失败而无法保存。
我阅读了文档并意识到我需要一个关于我保存到的托管对象上下文的合并策略。我设置了这个,正如this question 所说,保存错误消失了,但异常仍然存在。
我的问题
我需要担心这些异常吗?如果我确实需要摆脱这些异常,有什么想法可以解决吗?
【问题讨论】:
标签: cocoa multithreading core-data merge