我突然被一个奇怪的问题绊倒了。我有一个相当广泛的CoreData数据模型,我已将它(以及包含它的项目)复制到我正在处理的原型的新项目中。我让它工作,并混合和匹配新的实体和属性。
突然间,没有明显的原因,我突然收到以下错误:
'NSInternalInconsistencyException',原因:'+ entityForName: 无法在此模型中找到名为“DocumentLocations”的实体。'
我深入研究了创建NSManagedObjectContext,NSPersistentStoreCoordinator和NSManagedObjectModel的整个过程,并且已经达到了很明显没有加载对象模型的程度。我执行以下命令:
_managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain];
但是当我在加载后在模型中查找实体时(如果你将nil传递给mergedModelFromBundles,这个方法会从主包创建模型),那就没有了。
Xcode或模拟器似乎没有看到我的xdatamodel文件。我完全不知道为什么不呢。我将尝试通过URL明确加载来强制解决问题,但我不确定它是如何工作的。
任何线索? CoreData问题绝对令人困惑。随着时间的推移,我已经成功地完成了大部分工作,但是这个是一个令人头疼的问题。
编辑:亚历克斯想出来了。我只是想知道模型是如何从Xcode的'Compile Sources'列表中删除的。希望Xcode更可靠。真的可以成为PITA。
答案 0 :(得分:3)
答案 1 :(得分:2)
通过从模拟器和我的iPhone中删除应用程序来解决此问题。
显然,数据库是在没有早期运行的实体的情况下添加的。然后,一旦我添加了实体并将所有内容连接起来,就开始收到类似于上面的错误......
删除应用程序允许重新创建数据库并解决问题。