xcode之核心数据 : 'NSInternalInconsistencyException' , 原因 : '+entityForName: could not locate an entity named ' DocumentLocations' in this model. '

yjmyzz 阅读:34 2024-02-27 23:08:18 评论:0

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

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

'NSInternalInconsistencyException', reason: '+entityForName: could not locate an entity named 'DocumentLocations' in this model.'

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

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

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

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

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

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

请您参考如下方法:

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


标签:Exception
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号