2012-02-17 2 views
0

Я имею установку объекта MyObject как этогоКВЦ: NSConcreteValue непризнанного селектор послал к экземпляру


@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 

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

Любые идеи?

ответ

0

- 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

+0

Спасибо. Я просто обнаружил, что тоже проб и ошибок, но вы были быстрее с ответом здесь :) –