-1

私は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 を作成する方法を知っています

どんなポインタでも大歓迎です。ありがとう!

4

2 に答える 2

1

これらを自動化する方法を尋ねている場合:

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

次に、2 つの方法があります。

のすべての個々のプロパティに配列を使用します。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];
}

2番目のオプションを実行するには、@Florisが言ったことを実行labelStringsし、を配列に入れる必要があります。

于 2013-04-05T03:55:21.397 に答える