R – Objective-C error: Property ‘active’ is a scalar type on class ‘Routine’. Cannot generate a getter method for it

core-dataiphone-sdk-3.0objective-c

I'm getting the above error when the following runs in the iphone simulator (3.0 OS):

@interface Routine : NSManagedObject {

}

@property (nonatomic) BOOL active;

@implementation Routine
@dynamic active
@end

As you can see, I'm subclassing NSManagedObject because I'm using Core Data. In my data model, "active" is an option attribute of type Boolean.

What am I doing wrong here?

Thanks!

Best Solution

Everything that comes out of CD is an object, not a scaler. So, changer your code to:

@interface Routine : NSManagedObject {

}

@property (nonatomic) NSNumber * active;

@implementation Routine
@dynamic active
@end

If you want you can add a convenience accessor to deal with it as a scalar:

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

- (void) setActiveScalar:(BOOL)active_ {
  self.active = [NSNumber numberWithBool:active_];
}

Finally, if you control-click on a property in the model editor it will bring up an enormous contextual menu, including options to copy the appropriate declarations and definitions into your paste board, so you don't have to write them yourself.

Related Question