Objective-C错误:属性'active'是类'Routine'上的标量类型.无法为它生成getter方法

hig*_*ham 7 core-data objective-c iphone-sdk-3.0

当以下在iphone模拟器(3.0 OS)中运行时,我收到上述错误:

@interface Routine : NSManagedObject {

}

@property (nonatomic) BOOL active;

@implementation Routine
@dynamic active
@end
Run Code Online (Sandbox Code Playgroud)

如您所见,我正在继承NSManagedObject,因为我正在使用Core Data.在我的数据模型中,"active"是Boolean类型的选项属性.

我在这做错了什么?

谢谢!

Lou*_*arg 17

CD出来的一切都是一个对象,而不是一个缩放器.所以,将您的代码更改为:

@interface Routine : NSManagedObject {

}

@property (nonatomic) NSNumber * active;

@implementation Routine
@dynamic active
@end
Run Code Online (Sandbox Code Playgroud)

如果你想要,你可以添加一个方便的访问器来处理它作为标量:

- (BOOL) activeScalar {
  return self.active.boolValue;
}

- (void) setActiveScalar:(BOOL)active_ {
  self.active = [NSNumber numberWithBool:active_];
}
Run Code Online (Sandbox Code Playgroud)

最后,如果您在模型编辑器中按住Ctrl键单击某个属性,它将显示一个巨大的上下文菜单,包括将相应的声明和定义复制到粘贴板中的选项,因此您不必自己编写它们.