Почему мой объект не совместим со значением ключа?

Попытка использовать кодирование значения ключа, чтобы установить значение для моего объекта:

[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.
}
Другие вопросы по тегам