我知道对象属性的字符串名称。我将如何使用字符串获取和设置该属性?
问问题
7747 次
2 回答
50
虽然@weichsel 是正确的,但还有更好的方法。
采用:
[anObject valueForKey: @"propertyName"];
和
[anObject setValue:value forKey:@"propertyName"];
显然,@"propertyName"
可以是NSString
在运行时动态组合的。
这种技术称为键值编码,是 Cocoa 的基础。
为什么这更好是因为-valueForKey
它将做必要的事情来“装箱”属性返回到对象的任何类型。因此,如果属性是 type int
,它将返回一个NSNumber
包含 int 的实例。
这更容易处理 -performSelector
仅适用于恰好适合指针内存价值的类型。
请注意,还有-setValue:forKey:
.
于 2009-12-28T15:20:09.907 回答
2
@synthesize propertyName
自动生成 getter 和 setter 方法。
编译器生成
- (id)propertyName;
- (void)setPropertyName;
如果你有一个选择器作为 NSString,你可以使用performSelector:NSSelectorFromString
.
例如:
[object performSelector:NSSelectorFromString(@"propertyName") ...]
于 2009-12-28T15:13:28.220 回答