我有一个非常奇怪的错误发生在一直在工作了很长时间的应用程序。奇怪的CoreData错误...从insertNewObjectForEntityForName返回的值:似乎损坏
我不能再在我的CoreData模型中创建一个我的实体。
当我在我的模型创建一个特定实体,并尝试使用的NSLog打印(@ “%@”,OBJ),我得到这个奇怪的消息:
2011-11-08 13:03:05.936 iLearnFast [31541:15503] - [__ NSCFNumber objectID]:无法识别的选择器发送到实例0xa069e20
当我遍历该对象的属性/关系并打印出来时,一个特定的一对一关系返回一个奇怪的值[ obj valueForKey:]。它返回的值与上述错误消息中提到的指针/对象相同。
我以为我可能在某处破坏了内存,但是在初始化数据结构时,我插入了代码以在可执行文件的开头创建实体,并且出现同样的问题。我非常有信心,在这一点上我还没有犯过任何内存错误(并且内存错误会更随机......我可以创建数千个对象,并且总是同一个实体具有相同关系的相同问题,并且不会其他实体有问题)。
缩小的问题,这一个关系后,我发现我可以使误差通过重命名为任何其他关系消失。自我的App创建以来,这种关系被称为“文件”。
我可以通过重命名属性再次让我的代码工作,但它打乱了我的自动迁移轻巧,但现在我不得不面对搞清楚如何做一个更复杂的迁移。
如果任何人有任何想法可能会出错,我会非常感激。
这让我感到莫名其妙,感觉就像是Apple SDK中的一个bug。
我目前使用的XCode 4.2,并试图为双方iOS5.0和的iOS4.3和两个有相同的行为无论是软件开发工具包。
罗恩
感谢您的回复!所以我的对象不知何故有一个腐败的objectID?我把这段代码放在VERY开始,当我的应用程序除了创建托管对象模型/托管对象上下文之外什么也没做。另外......泄漏怎么会导致这个问题呢?我认为我可能会随机地在某处记忆内存,但是在创建对象的调用之后立即发生此错误。 – Ron
我也尝试改变我的对象不是一个自定义对象,而是直接作为一个NSManagedObject。同样的问题。当我创建NSManagedObject时,一个特定的关系被一个虚假的objectID所损坏。 – Ron
也许当你保存上下文时,coredata试图保存所有的对象,并且你收到了这个错误? – beryllium