2011-09-29 44 views
0

可能重複:
Objective C Equivalent of PHP’s 「Variable Variables」基於變量中的值設置(不同)屬性?

我有一個UIButton動作,即抓住按鈕發送

這一行給了我,我用一個開關,將所述發送方標籤聲明

int senderTag = [sender tag]; 

然後我有做...

switch (senderTag) { 
    case 1: 
     brain.selectedPaintColor1 = myColor; 
     break; 
    case 2: 
     brain.selectedPaintColor2 = myColor; 
     break; 
    case 3: 
     brain.selectedPaintColor3 = myColor; 
     ... 

我真的希望能夠做的就是使用標籤來設置一個變量屬性名這樣

[brain.selectedPaintColor%i,senderTag] = myColor; 

任何人都可以使用語法幫助是能夠做到這一點?

謝謝!

回答

2

你想

NSString *key = [NSString stringWithFormat:@"selectedPaintColor%i", senderTag]; 

[brain setValue:myColor forKey:key]; 
什麼直接翻譯
0

將您的屬性selectedPaintColor1,selectedPaintColor2等組合成NSMutableArray並將其用作屬性。現在,語法是:

[brain.paintColors replaceObjectAtIndex:sender.tag withObject:myColor]; 

請注意,如果您sender是類型的id你將不得不將它轉換成首先(UIView)

1

或者,由於上述賦值方法真的被轉換爲對setter方法的調用,因此可以構建一個選擇器數組並從索引數組中調用方法。 (不過,現在不要在這個語法中大肆渲染,儘管選擇器總是讓我頭疼。)

(事實上,有一種方法可以動態查找選擇器,因此您可以構建選擇器名稱字符串,然後看看它,VS構建預數組)。