KVC:NSConcreteValue 无法识别的选择器发送到实例
我有一个像这样的对象 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
获取该值,效果很好。
有什么想法吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
- 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- setValue:forKey:
'svalue
not meansNSValue
here. You should box the scalarint
intoNSNumber
but notNSValue
. See https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/KeyValueCoding/Articles/DataTypes.html#//apple_ref/doc/uid/20002171-BAJEAIEE