【发布时间】:2010-09-27 18:34:35
【问题描述】:
我有一个直接转发实例变量的对象。有些是 NSString,有些是无符号整数等。我的印象是 Key-Value 编码是可编写脚本的,因为我可以编写如下代码:
id key, value;
key = [[attributes objectAtIndex:j] name];
value = [[attributes objectAtIndex:j] stringValue];
[obj setValue:value forKey:key];
我在这里使用 stringValue 和 name 的原因是我正在使用 TouchXML 并从 XML 提要构建对象。
如果我尝试将任何内容分配给整数,上面的代码就会崩溃。如果我将 unsigned int 更改为 NSString 的实例,则不会出现任何运行时崩溃。据我了解,Key-Value 编码足够聪明,可以检测到这些问题。
我有哪些可能的解决方案?我怎样才能尽可能地抽象这个,以便我可以在许多不同的类上运行相同的方法,这些类都有自己的实例变量?
最优雅的方法是真正覆盖我的 setter 并使用 NSNumber 将字符串转换为 int 类型,我认为它已经由 KVC 处理了吗?
【问题讨论】:
标签: objective-c cocoa cocoa-touch key-value-observing