1

我在使用带有覆盖的 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 属性不支持这个还是我做错了什么?

4

1 回答 1

3

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

于 2013-11-06T16:49:26.220 回答