【发布时间】:2014-12-04 23:37:43
【问题描述】:
我认为这是一个有点典型的问题,我在后台线程上删除和更新 CoreData 数据,而 UITableView 正在呈现以前获取的 CoreData 对象数组,我收到:
"NSObjectInaccessibleException CoreData could not fulfill a fault for"
我已经阅读了很多关于如何修复它的建议,但在我盲目地添加代码之前,我想先重现这个问题。
对于我的测试用例,我有三个步骤。
- 从 CoreData 获取项目
- 创建后台线程。在新线程中创建长循环(可能是 100 次迭代),其中数据库被擦除并重新加载,就像在崩溃中一样。后台线程创建一个新的 NSManagedObjectContext 但与主上下文共享 PersistantStore。
- 将主 UI 线程发送到无限循环(>10,000 次迭代),不断从主上下文中获取新项目,然后迭代获取的对象。我也尝试过这个测试,只需遍历原始获取对象列表而不重新获取。
我希望这个测试用例会导致 NSObjectInaccessibleException 错误,但一切正常,我无法重现崩溃。在查看我的代码和无法重现此错误之间,我觉得我做的一切都是正确的。然而,不知何故,这种崩溃出现了。
关于如何重现此崩溃的任何想法?
【问题讨论】:
标签: ios objective-c multithreading core-data