KVC: Нераспознанный селектор NSConcreteValue отправлен в экземпляр - PullRequest
0 голосов
/ 17 февраля 2012

У меня есть объект MyObject, подобный этому


@interface MyObject : NSObject {
    int time;
}
@property (nonatomic, assign) int time;
@end

Я пытаюсь использовать KVC для установки значения, и мой код выглядит так:


MyObject* obj = [MyObject alloc] init];

int val = 2;
NSValue* nsvalue = [NSValue valueWithBytes:&val objCType:@encode(int)];
[obj setValue:nsvalue forKey:@"time"];   // here I get the exception

Когда я запускаю этот код, я получаю следующее исключение:


-[NSConcreteValue intValue]: unrecognized selector sent to instance 0x6e0f670

Я пробовал с другими типами данных (float) и получаю то же исключение. Я также пытался получить значение, используя valueForKey, и это хорошо работает.

Есть идеи?

1 Ответ

0 голосов
/ 17 февраля 2012

- setValue:forKey: value не означает NSValue здесь. Вы должны поместить скаляр int в NSNumber, но не NSValue. Смотри https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/KeyValueCoding/Articles/DataTypes.html#//apple_ref/doc/uid/20002171-BAJEAIEE

...