-1

我对 xcode 相当陌生,并试图让我的代码更有效率。我有下面的代码,我想将末尾的重复行放入一个循环中(数组中有更多项目)。我确信这很简单,但我不知道如何评估循环中的变量。我显然也在问谷歌错误的问题,因为它没有帮助!

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

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

4

2 回答 2

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;
}
于 2013-04-05T04:42:32.017 回答
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放入一个数组中。

于 2013-04-05T03:55:21.397 回答