Lucas Huang
Lucas Huang

Reputation: 4016

Why is my object not key value coding-compliant?

Trying to use key-value coding to set a value on my object:

[engine setValue:[NSNumber numberWithInt:horsePower]
          forKey:@"horsePower"];

Causes an error:

[<Slant6 0x7fbc61c15c40> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key horsePower.

What do I need to do to make engine key value coding-compliant?

Upvotes: 1

Views: 3873

Answers (2)

user529758
user529758

Reputation:

There are quite a bunch of approaches of taking advantage of KVC - perhaps the simplest is to just have an instance variable in your class with the name of the key you want to use, i. e.:

@interface Engine: NSObject {
    NSNumber *horsePower;
    // etc.
}

Upvotes: 3

dreamlax
dreamlax

Reputation: 95315

Make sure whatever class engine belongs to implements a horsePower property, and/or has a horsePower instance variable, and/or manually implements setHorsePower: and horsePower methods.

You are getting the error because you're trying to set the value of the horsePower key but engine's class does not properly implement a way to set the horsePower key.

Upvotes: 4

Related Questions