Core Data 对象删除使应用程序崩溃

Posted

技术标签:

【中文标题】Core Data 对象删除使应用程序崩溃【英文标题】:Core Data object deletion crashes app 【发布时间】:2012-09-10 14:24:02 【问题描述】:

我已经尝试在我的源代码中恢复原状,试图找出导致严重问题的原因。

当我从 Core Data 中删除 NSManagedObjects 时,我的应用程序崩溃并出现以下建议:

CoreData`_nameForEntityDescription:

请注意,我看到了NSManagedObjects 之一的错误,但也没有看到另一个NSManagedObjects 的错误。

我正在使用 MagicalRecord 来满足我的核心数据需求,但我不怀疑这是问题所在。在这一点上,我很困惑问题可能是什么。

是否有任何 Core Data 专家可以就问题可能给我任何提示?

当我尝试为一个对象(通过它的关系)获取一组 NSManagedObjects 时,我也看到了与 _nameForEntityDescription 完全相同的问题:

NSSet* delSet = [NSSet setWithSet:contact.contactEmails];

因此,NSManagedObject 模型似乎有些损坏,但我已经查看了我拥有的所有内容,但看不到它会是什么:(

【问题讨论】:

除非您愿意提供具体细节,否则您将得到的只是猜测。你有一个具体的问题。您的问题同样应提供具体细节。 是的,我知道。我已经在黑暗中拍摄了一天。如果有帮助,我已经用更多细节更新了答案。 【参考方案1】:

过去我在删除对象时遇到过崩溃。由于您在这里没有足够的详细信息,因此我将给您一些一般性的检查:

1) 当你删除一个对象时,确保你没有对它的未完成的引用。删除对象后保存上下文时,将删除存储中的支持引用。这意味着,您的对象在数据库中没有实际记录。下次您使用该对象时,Core Data 会向您大喊大叫。

2) 当您使用线程后台保存时,问题 1 经常发生。您可以使用的一个解决方案是在保存后重新获取我们所有的数据对象引用,以保证您拥有正确的数据和有效的对象。 MagicalRecord 提供了一个完成块机制来帮助您解决这个问题。

如果您怀疑您的 ManagedObjectModel 是问题所在,我还必须进行干净的构建并从模拟器/设备中删除应用程序以删除任何以前的构建工件。

【讨论】:

问题最终与在核心数据中使用抽象实体有关,我现在远离它!但是我对保存进行了一些调整,所以周围的线程更少了,现在一切都很好。谢谢!

以上是关于Core Data 对象删除使应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章

Restkit Core Data 映射崩溃应用程序

从 Core Data 中删除对象和切换视图控制器时崩溃

即使在删除之后,Core Data 命令也会使 ViewController 崩溃

在迁移时从 iCloud 迁移到本地商店崩溃的应用程序“对象不能为零” - 使用 Core Data

带有 EXC_BAD_ACCESS 的 Core Data deleteObject 应用程序崩溃

从表视图中删除数据会使应用程序崩溃