我已经通过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中创建了它。同样的问题?
答案 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?