我知道對象屬性的字符串名稱。我將如何使用字符串獲取並設置該屬性?使用屬性名稱動態訪問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. C#通過屬性名稱動態訪問屬性值
- 2. 如何使用動態名稱訪問會話屬性?
- 3. 在名稱中使用「/」訪問動態屬性
- 4. 在Powershell的屬性名稱中使用「#」訪問對象屬性?
- 5. 動態屬性名稱
- 6. jquery動態屬性名稱
- 7. 動態屬性名稱
- 8. 名爲'object'的動態訪問屬性
- 9. 訪問屬性動態
- 10. 訪問類名從屬性名稱
- 11. 基於屬性名稱動態觀察的敲除訪問
- 12. 使用屬性訪問屬性值
- 13. 訪問屬性名稱在變量中的對象屬性
- 14. 在屬性中訪問類和屬性名稱
- 15. VBA訪問沒有名稱屬性的json屬性
- 16. GoLang:訪問結構屬性的名稱
- 17. 訪問對象的名稱屬性
- 18. 按名稱訪問bean屬性
- 19. Java訪問器/ Mutator - >屬性名稱
- 20. 訪問對象的屬性名稱
- 21. 按名稱訪問JavaScript子屬性
- 22. 如何按名稱訪問屬性?
- 23. 即使按名稱訪問屬性,屬性獲取器是否被調用?
- 24. 將動態屬性名稱選擇
- 25. Ruby Nokogiri。匹配動態屬性名稱
- 26. VBA中的動態屬性名稱
- 27. 設置名稱屬性動態
- 28. ES6計算(動態)屬性名稱
- 29. JSP EL:動態創建屬性名稱
- 30. 螞蟻中的動態屬性名稱
非常方便!不知道。 – 2009-12-28 15:33:18