我在使用带有重写的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属性不支持这个或我做错了吗?
答案 0 :(得分:3)
@dynamic实际上并不为方法生成setter和getter,它只是告诉编译器会有什么东西。所以我认为NSManagedObject只生成标准命名的setter和getters