【问题标题】:CoreData: 'NSInternalInconsistencyException', reason: '+entityForName: could not locate an entity named 'DocumentLocations' in this model.'CoreData:“NSInternalInconsistencyException”,原因:“+entityForName:无法在此模型中找到名为“DocumentLocations”的实体。
【发布时间】:2011-10-05 19:02:57
【问题描述】:

我突然被一个奇怪的问题绊倒了。我有一个相当广泛的 CoreData 数据模型,我已经将它(以及包含它的项目)复制到一个新项目中,用于我正在研究的原型。我得到了它的工作,并且正在混合和匹配新的实体和属性。

突然,不知何故,我突然收到以下错误:

'NSInternalInconsistencyException',原因:'+entityForName: 在此模型中找不到名为“DocumentLocations”的实体。'

我深入研究了创建 NSManagedObjectContext、NSPersistentStoreCoordinator 和 NSManagedObjectModel 的整个过程,并且已经很清楚没有加载对象模型。我执行以下命令:

_managedObjectModel = [[NSManagedObjectModel mergeModelFromBundles:nil] 保留];

但是当我在加载后查找模型中的实体时(如果您将 nil 传递给 mergeModelFromBundles,则此方法从主包创建模型),什么都没有。

Xcode 或模拟器似乎看不到我的 xdatamodel 文件。我完全不知道为什么不。我将尝试通过一个 URL 显式加载它来强制解决这个问题,但我不确定它是如何工作的。

有什么线索吗? CoreData 问题绝对令人费解。随着时间的推移,我已经设法解决了其中的大部分问题,但这个令人头疼。

编辑:亚历克斯想通了。我只是想知道模型是如何从 Xcode 的“编译源”列表中删除的。希望 Xcode 更可靠。真的可以当 PITA。

【问题讨论】:

  • 您确定正在将 xcdatamodel 复制到您的应用中吗?仅将其添加到项目中可能还不够,因此您可能还需要检查构建设置以确保它被包含在内。您还可以在文件系统上跟踪您构建的 .app 包并打开它以查看是否包含数据模型文件。
  • 哇。那太棒了。我唯一的问题是:它到底是怎么被删除的????万分感谢。希望我昨天就知道了。会为我节省大量时间。现在我要回去调试我的 /other/ 问题了!再次感谢。
  • 将数据模型文件添加到当前构建目标(右侧边栏)
  • @MartinBrugger 是的。一旦亚历克斯确定了问题所在,我就这样做了。它奏效了。我只是不明白它是如何被删除的。据我所知,我没有做任何事情来促进这一点。我总是假设 EBSAK,但有时 Xcode 会表现在... 奇怪 ....
  • 我如何确定@Alex 的答案是正确的?

标签: xcode core-data model entity


【解决方案1】:

@Alex 想通了。出于某种原因,xdatamodel 已从构建设置中删除。我把它加回去了,它起作用了。我真的不明白为什么它会首先被删除。它实际上在一个构建和下一个构建之间消失了。

【讨论】:

    【解决方案2】:

    通过从模拟器和我的 iPhone 中删除应用程序来解决此问题。

    显然,在早期运行时添加了没有实体的数据库。然后,一旦我添加了实体并将所有内容连接起来,就开始收到类似于上面的错误...

    删除应用程序允许重新创建数据库并修复问题。

    【讨论】:

      猜你喜欢
      • 2011-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-29
      • 1970-01-01
      相关资源
      最近更新 更多