键值编码原语
我有一些自动反序列化代码,可以使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
当您通过
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.