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

发布于 2025-01-06 21:15:02 字数 637 浏览 0 评论 0 原文

我有一个像这样的对象 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 获取该值,效果很好。

有什么想法吗?

I'm having a object MyObject setup like this


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

I'm trying to use KVC to set the value and my code looks like this:


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

When I run this code, I get an exception like this:


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

I've tried with other data types (float) and get the same exception. I've also tried to get the value using valueForKey and that works well.

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

情仇皆在手 2025-01-13 21:15:02

- 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:'s value not means NSValue here. You should box the scalar int into NSNumber but not NSValue. See https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/KeyValueCoding/Articles/DataTypes.html#//apple_ref/doc/uid/20002171-BAJEAIEE

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文