Why is my object not key value coding-compliant?

五迷三道 提交于 2019-11-28 02:25:33

问题


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?


回答1:


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.




回答2:


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.
}


来源:https://stackoverflow.com/questions/11491957/why-is-my-object-not-key-value-coding-compliant

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!