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

jdo*_*dog 3 core-data objective-c ios

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

MyObject *thing = [MyObject objectFromJSONDictionary:obj];
thing.name = obj; <-- ERROR HERE
Run Code Online (Sandbox Code Playgroud)

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

@property (nonatomic, retain) NSString * name;

@dynamic name;
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*n R 6

NSManagedObject类参考:

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

还有一种便利方法

+[NSEntityDescription insertNewObjectForEntityForName:inManagedObjectContext:]
Run Code Online (Sandbox Code Playgroud)

可用于创建托管对象.

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

您可以使用nil上下文创建一个对象,然后将其添加到托管对象上下文中,例如,请参阅:如何在初始化后将NSManagedObject与上下文关联?