CoreData:'NSInternalInconsistencyException',原因:'+ entityForName:无法在此模型中找到名为'DocumentLocations'的实体。

时间:2011-10-05 19:02:57

标签: xcode core-data model entity

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

突然间,没有明显的原因,我突然收到以下错误:

  

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

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

  

_managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain];

但是当我在加载后在模型中查找实体时(如果你将nil传递给mergedModelFromBundles,这个方法会从主包创建模型),那就没有了。

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

任何线索? CoreData问题绝对令人困惑。随着时间的推移,我已经成功地完成了大部分工作,但是这个是一个令人头疼的问题。

编辑:亚历克斯想出来了。我只是想知道模型是如何从Xcode的'Compile Sources'列表中删除的。希望Xcode更可靠。真的可以成为PITA。

2 个答案:

答案 0 :(得分:3)

@Alex想出来了。出于某种原因,xdatamodel已从构建设置中删除。我把它重新添加进去了。我真的不明白为什么它本来会被删除。它确实在一个构建和下一个构建之间消失了。

答案 1 :(得分:2)

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

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

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