我在使用带有覆盖的 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] 访问 active 属性,这确实有效。NSManagedObject 属性不支持这个还是我做错了什么?