insertNewObjectForEntityForName:inManagedObjectContext:返回 NSNumber 错误?

Posted

技术标签:

【中文标题】insertNewObjectForEntityForName:inManagedObjectContext:返回 NSNumber 错误?【英文标题】:insertNewObjectForEntityForName: inManagedObjectContext: returning NSNumber bug? 【发布时间】:2010-04-29 18:19:21 【问题描述】:

我比较精通CoreData,并且已经使用了几年,几乎没有困难。突然间,我现在对一个错误感到目瞪口呆。对于我的生活,我无法弄清楚为什么

insertNewObjectForEntityForName:inManagedObjectContext:

突然返回某种奇怪的 NSNumber 实例。 GDB 说返回的对象是 NSManagedObject 的正确自定义子类,但是当我打印 NSManagedObject 本身的描述时,我收到以下错误:

*** -[NSCFNumber objectID]: unrecognized selector sent to instance 0x3f26f50

更奇怪的是,我可以使用 setValue:forKey: 设置一些关系和属性,一切都很好。但是当我尝试设置一次特定的关系时,我得到了这个错误:

*** -[NSCFNumber entity]: unrecognized selector sent to instance 0x3f26f50

有没有人遇到过这样的事情?我已经尝试清理所有目标,重新启动一切,甚至将模型更改为有问题的关系是一对一而不是一对多。没有任何区别。

【问题讨论】:

insertNewObjectForEntityForName:inManagedObjectContext: returning NSNumber bug? 的可能重复项 【参考方案1】:

在我希望位于内存地址“指针”的对象已被其他东西替换的情况下,我之前遇到过“无法识别的选择器发送到实例 0x...”错误。以这种情况为例:

NSAutoReleasePool *pool = [[NSAutoReleasePool alloc] init]; NSString *someString = [NSString stringWithString:@"some string"]; // 自动释放的对象返回 [池排水]; [池释放]; /* 其他一些代码执行 */ // 由于此时 someString 变量后面的字符串已被自动释放,因此 someString 指向的内存可能被其他数据类型占用。以下可能通过 EXC_BAD_ACCESS 错误,或者它可能会尝试在占用该内存空间的任何内容上执行选择器 int stringLength = [someString 长度];

这个例子非常简单,我的语义在这里可能有点偏离,但是这可能是你的情况以更复杂的方式发生的事情吗?也许试试:

[[NSEntityDescription insertNewObjectForEntityForName:@"entityName" inManagedObjectContext:managedObjectContext] 保留]

看看会发生什么?

【讨论】:

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