在过去的几个小时里,我一直在试着找出insertNewObjectForEntityForName
返回NSManagedObject
的原因,即使我正在尝试插入我自己类型的实体。
我检查了一千次的事情:
可能发生这种情况的原因是什么?我不知道从哪里看,谷歌没有多大帮助:(
编辑(已解决):
这与版本控制有关...我删除了数据模型并再次重新创建它,一切都开始工作,之前有一些以前使用过的版本... 叹息有时会问一个问题提供了如何找到解决方案的想法
我仍然对为什么会发生这种情况感到困惑,即使它现在已经解决了
答案 0 :(得分:7)
我最后遇到了类似的情况,并采用了不同的解决方案。通过一系列不幸的事件(命名空间冲突强制改变我的一个实体),我得到了一个自定义实体,它的Class在数据模型中设置为默认的NSManagedObject,而不是正确的自定义子类。
因此,在您完成删除整个数据模型和重建之前的麻烦之前(就像我刚刚做的那样,感谢上帝的git分支),只需检查以确保您的类仍然正确设置。
答案 1 :(得分:1)
我发生了这种情况,但它不是一个腐败的模型,它实际上是模型文件中我的实体定义中的拼写错误。
基本上,实体和属性都是正确的,但我的实体的“ClassName”有一个错字。这导致Core Data有足够的信息来实际读取和写入实体,但它无法实例化该类(因为它实际上并不存在我输入错误的名称)
答案 2 :(得分:0)
这与版本控制有关...我删除了数据模型并再次重新创建它,一切都开始工作,之前有一些以前使用的版本...叹息有时会问一个问题,让我们知道如何找到解决方案
答案 3 :(得分:0)
在删除NSManagedObject子类的一些源文件并从Xcode中的模型编辑器重新生成它们之后,我今天也遇到了同样的情况。
我检查了project.pbxproj文件,发现有一些不一致的id-source文件对(可能是Xcode bug?)。
我设法通过从项目中删除所有模型并再次添加它来修复它(我还手动从project.pbxproj中删除了一些文件链接)。
谢谢您的提示。
答案 4 :(得分:0)
今天遇到同样的问题。经过2个小时的拔毛发现我只是没有将实体类源文件添加到目标中!