键值编码原语

发布于 2024-09-14 13:14:48 字数 168 浏览 7 评论 0原文

我有一些自动反序列化代码,可以使用 KVC 设置对象的属性。我需要添加对基元(int、double、float)的反序列化支持,但我无法(或不确定如何)将“setValue: forKey:”与基元一起使用。属性查找必须在运行时执行。有什么想法吗?谢谢。

I have some automatic de-serialization code that will set an object's properties using KVC. I need to add de-serialization support for primitives (int, double, float), but I am unable (or unsure of how) to use "setValue: forKey:" with primitives. The property lookups must be performed at runtime. Any ideas? Thanks.

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

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

发布评论

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

评论(1

不乱于心 2024-09-21 13:14:48

当您通过 valueForKey: 获取这样的值时,它会为您将值装箱到 NSNumber (或 NSValue,对于某些结构类型)对象中。

您只需要以另一种方式做同样的事情:自己将所需的值装箱,然后将该对象传入。 setValue:forKey: 将在将其传递给属性的访问器/将其存储在中之前将其拆箱相关的ivar。

When you obtain such a value through valueForKey:, it will box the value up for you in an NSNumber (or NSValue, for certain structure types) object.

You just need to do the same thing the other way: Box the desired value up yourself, and pass that object in. setValue:forKey: will unbox it before passing it to the property's accessor/storing it in the relevant ivar.

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