Почему мой объект не совместим со значением ключа?
Попытка использовать кодирование значения ключа, чтобы установить значение для моего объекта:
[engine setValue:[NSNumber numberWithInt:horsePower]
forKey:@"horsePower"];
Вызывает ошибку:
[<Slant6 0x7fbc61c15c40> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key horsePower.
Что мне нужно сделать, чтобы сделать engine
значение ключа соответствует кодированию?
2 ответа
Убедитесь, что любой класс engine
принадлежит реализует horsePower
собственность и / или имеет horsePower
переменная экземпляра и / или реализует вручную setHorsePower:
а также horsePower
методы.
Вы получаете ошибку, потому что вы пытаетесь установить значение horsePower
ключ, но engine
класс не правильно реализует способ установить horsePower
ключ.
Существует довольно много подходов, позволяющих использовать преимущества KVC - возможно, самый простой - просто иметь в своем классе переменную экземпляра с именем ключа, который вы хотите использовать, т.е.
@interface Engine: NSObject {
NSNumber *horsePower;
// etc.
}