NSManagedObject setter给我[MyObject setName:]:无法识别的选择器发送到实例 [英] NSManagedObject setter giving me [ MyObject setName:]: unrecognized selector sent to instance

查看:192
本文介绍了NSManagedObject setter给我[MyObject setName:]:无法识别的选择器发送到实例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have created an NSManagedObject via xcode Editor menu. My object only has one property "name". When I try to set the property I get "[MyObject setName:]: unrecognized selector sent to instance"

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

我已经检查我的属性name在我的课。另外我的接口属性是一样的。我的动态属性是一样的。

I have checked that my property "name" is the same in CD as in my class. Also my interface property is the same. And my dynamic property is the same.

@property (nonatomic, retain) NSString * name;

@dynamic name;

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

Any suggestions? And yes I have wiped out the CD object, cleaned my project, and created it in CD again. Same issue?

推荐答案

NSManagedObject 类参考:


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

还有一个方便的方法

+[NSEntityDescription insertNewObjectForEntityForName:inManagedObjectContext:]

Core Data对象的访问器方法是在运行时动态创建的
所以这个限制的一个原因是

The accessor methods of Core Data objects are created dynamically at runtime, so one reason for this restriction is that the entity description has to be known.

您可以使用 nil 上下文并将其添加到受管对象上下文,请参阅例如:

You can create an object with a nil context and add it to a managed object context later, see for example: How can I associate an NSManagedObject to the context after it has been initialised?

这篇关于NSManagedObject setter给我[MyObject setName:]:无法识别的选择器发送到实例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆