2014-11-14 48 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]; 
} 
相关问题