2012-08-24 39 views
2

如果我在這樣的目標C兩個變量,其中一個持有另外的名字作爲一個字符串如何訪問使用串保持其名稱的屬性/變量

NSInteger result = 4; 
NSString * theName = @"result"; 

如何將我最好的訪問第一個變量使用字符串而不是變量的引用?例如,如果我有很多變量,並會生成我需要的代碼的名稱,我需要一種方法來使用該字符串來獲取變量。

+0

我們可以有更多的上下文嗎?我猜想你不能把事情放到NSDictionary中?你是否需要這個屬性或變量? – Thilo

回答

6

雖然沒有直接回答你的問題,有可能通過

[object setValue:@"value" forKey:theName] 

同樣訪問對象的屬性(或實例變量),吸氣劑是[object valueForKey:theName](感謝kevboh!)

+0

類似的,getter是'[object valueForKey:theName]'。 – kevboh

+1

問題是,他需要根據字符串獲取對象本身:) – Asciiom

+2

@JeroenMoons儘管如此,Objective-C代碼通常是在類的上下文中編寫的,而變量實際上是ivars或屬性,在這種情況下,我的答案解決了這個問題。 – user1071136

1

那是不可能的Objective-C的。變量名稱不能通過名稱合成。當運行你的代碼時,變量名本身並不意味着什麼,編譯器會將它轉換成內存地址。這個名字只是讓程序員更容易編寫和閱讀代碼的一種方式。

取決於你的確切情況,但你可能應該使用NSArray或NSDictionary。

+0

這是爲什麼downvoted? – Asciiom

+0

不是我,但可能是因爲你只是說這是不可能的,沒有證實你的答案。 – user1071136

+0

我現在給了一些更多的解釋,但仍然奇怪:) – Asciiom

相關問題