insertNewObjectForEntityForName 返回错误的类型

Posted

技术标签:

【中文标题】insertNewObjectForEntityForName 返回错误的类型【英文标题】:insertNewObjectForEntityForName returns wrong type 【发布时间】:2010-10-14 03:39:05 【问题描述】:

过去几个小时我一直在努力弄清楚为什么 insertNewObjectForEntityForName 会返回 NSManagedObject,即使我正在尝试插入我自己类型的实体。

我检查了一千次的事情:

类名称在图表设计器中设置为正确的值 实体与另一个实体具有多对多关系,从而使另一个实体按预期工作,并且我确实得到了正确键入的输出,我发誓它们是相同的

发生这种情况的可能原因是什么?我不知道从哪里看,谷歌并没有多大帮助:(

编辑(已解决):

这与版本控制有关...我删除了数据模型并重新创建它,一切都开始工作了,在以前使用的几个版本之前... sigh 有时会问一个问题给出了如何找到解决方案的想法

我仍然不明白为什么会这样,尽管现在已经解决了

【问题讨论】:

干净的重建通常可以解决核心数据的意外问题。更改数据模型时构建系统存在某种缺陷 【参考方案1】:

我最终遇到了类似的情况,但采用了不同的解决方案。通过一系列不幸的事件(命名空间冲突迫使我更改了一个实体),我最终得到了一个自定义实体,该实体的 Class 设置为数据模型中的默认 NSManagedObject 而不是正确的自定义子类。

因此,在您完成删除整个数据模型并重建它的麻烦之前(就像我刚才所做的那样,感谢上帝的 git 分支),只需检查以确保您的 Class 仍然设置正确。

【讨论】:

这就是我的解决方案。非常感谢你!我对此感到很困惑。 天啊!这也对我有用!这解释了我在生成 .h 和 .m 文件时遇到的问题。【参考方案2】:

我也发生过这种情况,但它不是损坏的模型,它实际上是模型文件中我的实体定义中的错字。

基本上实体和属性都是正确的,但我的实体的“ClassName”有错字。这会导致 Core Data 有足够的信息来实际读取和写入实体,但它无法实例化该类(因为它实际上并不存在于我输入错误的名称中)

【讨论】:

【参考方案3】:

这与版本控制有关...我删除了数据模型并重新创建了它,一切都开始工作了,在以前使用过的几个版本之前...叹息有时问一个问题可以了解如何寻找解决方案

【讨论】:

【参考方案4】:

我今天在删除一些 NSManagedObject 子类的源文件并从 Xcode 中的模型编辑器重新生成它们后遇到了同样的情况。

我检查了 project.pbxproj 文件,发现有一些不一致的 id-source 文件对(可能是 Xcode 错误?)。

我已经设法通过从项目中删除所有模型并再次添加它们来修复它(我还手动从 project.pbxproj 中删除了一些文件链接)。

谢谢你的提示。

【讨论】:

【参考方案5】:

今天遇到同样的问题。拉了2个小时的头发发现我只是没有将实体类源文件添加到目标中!

【讨论】:

以上是关于insertNewObjectForEntityForName 返回错误的类型的主要内容,如果未能解决你的问题,请参考以下文章