如何找到“CoreData无法完成故障”的例外

时间:2013-06-11 06:28:36

标签: ios core-data fault magicalrecord

我正在使用MagicalRecord来处理我正在进行的所有CoreData资料,并NSFetchedResultsControllersTableViewsCollectionViews中显示数据。

问题是,在我的应用中的某个地方,我似乎遇到了"CoreData could not fulfill a fault"异常的问题。

是否有解决方案为我的应用程序的这一部分设置断点?我遇到的主要问题是它崩溃了,我不知道在哪里找到它! “所有例外”断点似乎没有帮助...

顺便说一下。我没有保留任何managedObjects ......这让我更加奇怪......

感谢任何帮助

2 个答案:

答案 0 :(得分:8)

当您的代码(或MagicalRecord)保留CoreData在托管对象上下文中删除的对象(通常在另一个线程上)时,会发生此错误。我会确保我不存储临时对象或可能作为属性,集合等删除的对象。因为你提到你没有,我会确保我没有可能不同步的线程代码,最后,我会确保MagicalRecord没有针对一对多关系类的某些线程背景删除或虚假垃圾收集,或者那种可能导致问题的类型。

作为解决方案,您可以手动检查故障对象以避免崩溃。看看这个问题的方法: How can I tell whether an `NSManagedObject` has been deleted?

很抱歉,如果这太普通了,但是没有看到你的申请,很难说你为什么会收到错误。

答案 1 :(得分:2)

也许放弃像MagicalRecord这样的第三方框架可能有所帮助。我经历过这些框架几乎没有增加价值,并可能造成破坏。

我认为不保留托管对象与此无关。

另一个建议是,您可以在访问托管对象的代码中广泛使用日志语句。这应该可以帮助您缩小错误的可能位置。结合乐器,你很快就会抓住罪魁祸首。