我有一个像这样的对象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
来获取价值并且效果很好。
有什么想法吗?
答案 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