我对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
任何指针都非常感激。谢谢!
答案 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
放入数组中。