2014-11-14 110 views
1

真的很奇怪的問題,但我只是無法找到正確的方式在互聯網上做到這一點我的自我。 我有3個NSStrings。稱爲:string1,string2和string3。 他們都從同一個UITextfield獲得價值,但在不同的時間。所以這些值是彼此不同的。 現在發生的是:使用名稱幾乎相同的變量快速工作

-(void)statement { 
    if (i==0) { 
     string1 = nameField.text; 
    } else if (i==1) { 
     string2 = nameField.text; 
    } else if (i==2) { 
     string3 = nameField.text; 
    } 
} 

是否有可能取代1,2和的具有可變什麼「串」 3落後,所以我可以這樣說:

-(void)statement { 
    stringX = nameField.text;  
} 

所以我可以在語句被激活之前更改X?

希望一切都清楚!

謝謝!

+3

這聽起來像你想使用[陣列(http://www.tutorialspoint.com/objective_c/objective_c_arrays.htm)... – Krease 2014-11-14 20:01:35

回答

3

聲明一個可變數組稱爲,例如,MyString中

NSMutableArray *myString = [[NSMutableArray alloc] init]; 

然後使用類似

myString[i] = nameField.text 
+0

謝謝你,我實際上用一個普通的NSArray試了幾次,這樣做不起作用。謝謝老兄 – Vince 2014-11-15 21:39:07

0

如果這些字符串是一個對象的屬性,可以使用KVO:

@property (nonatomic, strong) NSString *string1; 
@property (nonatomic, strong) NSString *string2; 
@property (nonatomic, strong) NSString *string3; 

設置器:

[object setValue:nameField.text forKey:[NSString withFormat:@"string%@", @(i)]]; 
0

或者創建一個選擇並執行它:

// assuming 
@property (nonatomic, strong) NSString *string1; 
@property (nonatomic, strong) NSString *string2; 
@property (nonatomic, strong) NSString *string3; 

// then 
-(void)statement { 
    NSString *selName = [NSString withFormat:@"setString%@", @(i)]; 
    SEL sel = NSSelectorFromString(selName); 
    [self performSelector:sel withObject:nameField.text afterDelay:0]; 
} 
相關問題