KVC:NSConcreteValue无法识别的选择器发送到实例

时间:2012-02-17 08:47:01

标签: objective-c ios key-value-coding unrecognized-selector

我有一个像这样的对象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 :(得分:0)

- setValue:forKey:的{​​{1}}不代表value。您应该将标量NSValue包装到int中,而不是NSNumber。见https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/KeyValueCoding/Articles/DataTypes.html#//apple_ref/doc/uid/20002171-BAJEAIEE