我知道對象屬性的字符串名稱。我將如何使用字符串獲取並設置該屬性?使用屬性名稱動態訪問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