重写的NSManagedObject getter无法识别

时间:2013-11-06 16:41:35

标签: ios dynamic properties unrecognized-selector

我在使用带有重写的getter方法名称的布尔属性时遇到问题。例如,在我的NSManageObject子类的标题中,我有:

@property (nonatomic, retain, getter=isActive) NSNumber * active;

在我的实现文件中:

@dynamic active;

Xcode识别“isActive”方法并在我输入时为我自动填充,代码编译时没有错误。但是,这段代码:

MyObject *newObject = (MyObject *)[NSEntityDescription insertNewObjectForEntityForName:@"MyObject" inManagedObjectContext:[self context]];
NSNumber * tagActive = [newObject isActive];

失败的经典:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[MyObject isActive]: unrecognized selector sent to instance 0xb67e760'

我已经测试过删除自定义getter并只使用[myObject active]访问活动属性,这确实有效。 NSManagedObject属性不支持这个或我做错了吗?

1 个答案:

答案 0 :(得分:3)

@dynamic实际上并不为方法生成setter和getter,它只是告诉编译器会有什么东西。所以我认为NSManagedObject只生成标准命名的setter和getters