Subclassing NSManagedObject

  • Hi List,

    I have created a class MyEntity which is a subclass of
    NSManagedObject. The Entity contains
    one attribute ("name") and one to-many relationship ("myRelation").
    In MyEntity I override the following two methods and I have one
    initWithName: method:

    - (id) valueForKey:(NSString *)key;  {
    return [super valueForKey:key];
    }

    - (void) setValue: (id)value forKey: (NSString *)key {
    [super setValue:value forKey:key];
    }

    - (id) initWithName: (NSString *) newName {
    self = [super init];

    if(self)
      [self setValue:newName forKey:@"name"];

    return self;
    }

    Then I try to add an instance of MyEntity to an NSArrayController via
    addObject: with the code:

    MyEntity *entity = [[MyEntity alloc] initWithName:@"My Name"];
    [super addObject:entity];

    While adding the object to the NSArrayController I get the following
    exception:

    [<MyEntity 0x183310> setValue:forUndefinedKey:]: the entity (null) is
    not key value coding-compliant for the key name.

    What is the reason for the exception? Do I have to add custom accessor
    methods to MyEntity? If yes, how might these methods
    look like for a to-many relationship?

    Thank you very much in advance,
    Michael
  • Please read the documentation on -[NSManagedObject
    initWithEntity:insertIntoManagedObjectContext:]

    Mike.

    On 31 Dec 2007, at 10:46, Michael Grützner wrote:

    > Hi List,
    >
    > I have created a class MyEntity which is a subclass of
    > NSManagedObject. The Entity contains
    > one attribute ("name") and one to-many relationship ("myRelation").
    > In MyEntity I override the following two methods and I have one
    > initWithName: method:
    >
    > - (id) valueForKey:(NSString *)key;  {
    > return [super valueForKey:key];
    > }
    >
    > - (void) setValue: (id)value forKey: (NSString *)key {
    > [super setValue:value forKey:key];
    > }
    >
    > - (id) initWithName: (NSString *) newName {
    > self = [super init];
    >
    > if(self)
    > [self setValue:newName forKey:@"name"];
    >
    > return self;
    > }
    >
    >
    > Then I try to add an instance of MyEntity to an NSArrayController
    > via addObject: with the code:
    >
    > MyEntity *entity = [[MyEntity alloc] initWithName:@"My Name"];
    > [super addObject:entity];
    >
    > While adding the object to the NSArrayController I get the following
    > exception:
    >
    > [<MyEntity 0x183310> setValue:forUndefinedKey:]: the entity (null)
    > is not key value coding-compliant for the key name.
    >
    > What is the reason for the exception? Do I have to add custom
    > accessor methods to MyEntity? If yes, how might these methods
    > look like for a to-many relationship?
    >
    > Thank you very much in advance,
    > Michael
previous month december 2007 next month
MTWTFSS
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
Go to today