Xcode:我如何将其置于循环中?

时间:2013-04-05 03:50:18

标签: objective-c variables loops

我对xcode很新,并试图让我的代码更有效率。我有下面的代码,我想把重复的行放在一个循环中(数组中有更多的项目)。我确信这很简单,但我无法弄清楚如何评估循环中的变量。我显然也在向Google提出错误的问题,因为它没有帮助!

GlossaryDetailViewController *dController = segue.destinationViewController;
glossaryDict = glossaryArray [indexPath.row];
dController.detailLabelText = [glossaryDict objectForKey:@"Explanation"];
dController.detailTitle = [glossaryDict objectForKey:@"Term"];
NSMutableArray *labelArray;
labelArray = [glossaryDict objectForKey:@"Label"];
dController.labelString0 = labelArray[0];
dController.labelString1 = labelArray[1];

我知道如何创建循环,即for(int i = 0; i

任何指针都非常感激。谢谢!

2 个答案:

答案 0 :(得分:1)

如果您问如何自动化这些:

dController.labelString0 = labelArray[0];
dController.labelString1 = labelArray[1];
dController.labelStringxx=labelArray[xx];

然后你有两种方式:

使用数组用于GlossaryDetailViewController的所有单个属性

for(NSInteger i=1; i<labelArray.count; i++){
    dController.labelString[i]=labelArray[i];
}

或者,使用键值编码(如果您不限制更改班级):

for (NSInteger i=1; ;i++) { //still here you need to put 1 
    NSString *propertyName=[NSString stringWithFormat:@"labelString%d",i];
    if([dController respondsToSelector:NSSelectorFromString(propertyName)]){
        [dController setValue:labelArray[i] forKey:propertyName];
    }
    else break;
}

答案 1 :(得分:0)

我无法准确地说出你的问题,但我认为你想要这样的事情

for (NSString *str in labelArray){
//do stuff with str
NSLog(@"%@", str);
}

for (int i = 0; i < [labelArray count]; i++){
dController.labelString[i] = labelArray[i];
}

要执行第二个选项,您必须执行@Floris所说的操作,并将labelStrings放入数组中。