我知道对象属性的字符串名称。我将如何使用字符串获取并设置该属性?使用属性名称动态访问Objective-C属性
24
A
回答
48
虽然@weichsel是正确的,有一个更好的办法。
用途:
[anObject valueForKey: @"propertyName"];
和
[anObject setValue:value forKey:@"propertyName"];
显然,@"propertyName"
可以是NSString
是在运行时动态组成。
这种技术被称为Key Value Coding,是可可的基础。
为什么这样更好是因为-valueForKey
将做什么必须“框”任何类型的属性返回到一个对象。因此,如果属性类型为int
,它将返回包含int的NSNumber
实例。
这是很容易对付 - performSelector
将只为发生适应一个指针的值的存储器类型的工作。
请注意,也有-setValue:forKey:
。
2
@synthesize propertyName
自动生成getter和setter方法。
编译器生成
- (id)propertyName;
- (void)setPropertyName;
如果你有一个选择为的NSString,你可以使用performSelector:NSSelectorFromString
。
例如为:
[object performSelector:NSSelectorFromString(@"propertyName") ...]
+1
您必须使用'performSelector:withObject:'来设置属性。 – 2009-12-28 15:17:48
相关问题
- 1. 在Powershell的属性名称中使用“#”访问对象属性?
- 2. 动态属性名称
- 3. 动态属性名称
- 4. 访问类名从属性名称
- 5. 基于属性名称动态观察的敲除访问
- 6. 访问属性名称在变量中的对象属性
- 7. VBA访问没有名称属性的json属性
- 8. Java访问器/ Mutator - >属性名称
- 9. 按名称访问JavaScript子属性
- 10. 访问对象的属性名称
- 11. 按名称访问bean属性
- 12. JSP EL:动态创建属性名称
- 13. 动态属性名称搜索
- 14. Ruby Nokogiri。匹配动态属性名称
- 15. VBA中的动态属性名称
- 16. 更改属性名称动态
- 17. 带动态属性名称的isset()
- 18. 使用属性名称中的字符串动态访问对象属性Objective-C
- 19. 使用类名访问href属性
- 20. 访问静态属性PARAMS
- 21. 访问父类动态创建属性
- 22. 动态访问对象属性
- 23. Newtonsoft.Json - 动态对象属性访问
- 24. 无法访问动态属性
- 25. Django动态访问相关属性?
- 26. as3 - 动态访问类属性
- 27. 如何动态/后期访问属性?
- 28. 动态访问功能对象属性
- 29. 速度动态属性访问
- 30. 动态访问母版页属性
非常方便!不知道。 – 2009-12-28 15:33:18