使用几乎相同名称的变量更快地工作

时间:2014-11-14 19:56:52

标签: objective-c loops variables if-statement nsstring

真的很奇怪的问题,但我无法找到正确的方法在互联网上做我自己。 我有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;
    }
}

是否可以用变量或其他东西替换'string'后面的1,2和3,所以我可以这样说:

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

这样我可以在激活语句之前更改X?

希望一切都清楚!

谢谢!

3 个答案:

答案 0 :(得分:3)

声明一个名为mysString的可变数组,例如myString

NSMutableArray *myString = [[NSMutableArray alloc] init];
然后使用

之类的东西
myString[i] = nameField.text

答案 1 :(得分: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)]]; 

答案 2 :(得分: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];
}