insertNewObjectForEntityForName:inManagedObjectContext:返回NSNumber错误?

bei*_*ein 9 iphone objective-c nsmanagedobject nsmanagedobjectcontext

我对CoreData非常精通,并且几年来一直使用它很少或没有困难.对于我的生活,我无法弄清楚为什么

insertNewObjectForEntityForName:inManagedObjectContext:
Run Code Online (Sandbox Code Playgroud)

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

*** -[NSCFNumber objectID]: unrecognized selector sent to instance 0x3f26f50
Run Code Online (Sandbox Code Playgroud)

更奇怪的是,我能够使用setValue设置一些关系和属性:forKey:一切都很好.但是当我尝试设置一个特定的关系时,我收到此错误:

*** -[NSCFNumber entity]: unrecognized selector sent to instance 0x3f26f50
Run Code Online (Sandbox Code Playgroud)

我已经尝试了从干净的所有目标,重新启动mac和iPhone,甚至编辑模型,以便所讨论的关系是一个而不是多个.无论我做什么,都会出现同样的问题.有没有人见过这样的事情呢?

小智 14

我遇到了同样的问题:我添加了一个名为"isDatabase"的方法(返回BOOL)到我的数据库实体的父实体,该实体具有名为"database"的关系.将"isDatabase"重命名为"isOfTypeDatabase"修复了该问题.所以请继续关注父实体!


小智 0

objectID 和实体选择器位于NSManagedObject,而不是NSCFNumber(或NSNumber)。我不希望您在 a 上调​​用这些选择器中的任何一个,NSNumber它应该是实体的属性,而不是实体本身。

CoreData 中的每个实体都必须扩展NSManagedObject,因此您的NSCFNumber对象不是实体。