NSManagedObject setter给我[MyObject setName:]:发送到实例的无法识别的选择器

时间:2014-05-23 17:49:55

标签: ios objective-c core-data

我已经通过xcode Editor菜单创建了一个NSManagedObject。我的对象只有一个属性“name”。当我尝试设置属性时,我得到“[MyObject setName:]:无法识别的选择器发送到实例”

MyObject *thing = [MyObject objectFromJSONDictionary:obj];
thing.name = obj; <-- ERROR HERE

我已经检查过我的属性“name”在CD中和我班级中的相同。我的界面属性也一样。我的动态属性是一样的。

@property (nonatomic, retain) NSString * name;

@dynamic name;

有什么建议吗?是的,我已经清除了CD对象,清理了我的项目,并再次在CD中创建了它。同样的问题?

1 个答案:

答案 0 :(得分:6)

来自NSManagedObject班级参考:

  

如果直接实例化托管对象,则必须调用   指定初始化程序   (initWithEntity:insertIntoManagedObjectContext:)。

还有一种便利方法

+[NSEntityDescription insertNewObjectForEntityForName:inManagedObjectContext:]

可用于创建托管对象。

Core Data对象的访问器方法是在运行时动态创建的, 所以这种限制的一个原因是必须知道实体描述

您可以创建一个带有nil上下文的对象,稍后将其添加到托管对象上下文中,例如参见:How can I associate an NSManagedObject to the context after it has been initialised?