1

通常のループでは、for ループ内のカウンターとしてfor使用できます。i上記からカウント数を知るにはどうすればよいですか?

for(int i=0;i<[someArray count];i++)
{
   bla = [arrayExample objectAtIndex:i];
}

for(id someObject in someArray)
    {
       bla = [arrayExample objectAtIndex:??];
    }
4

6 に答える 6

5

通常の for ループを使用することも、現在の高速列挙にカウンターを追加することもできます。

これには、現在使用しているインデックスも含めながら、高速な列挙という利点があります。

int index = 0;

for (id element in someArray) {
    //do stuff
    ++index;
}

さらに良いのは、高速列挙ブロック方式を使用することです...

[someArray enumerateWithUsingBlock:^(id element, NSUInteger idx, BOOL stop) {
    // you can do stuff in here.
    // you also get the current index for free
    // idx is the index of the current object in the array
}];
于 2013-06-19T06:57:31.170 に答える
3
 [animationKey addObject:@"cameraIris"];
    [animationKey addObject:@"cameraIrisHollowOpen"];
    [animationKey addObject:@"cameraIrisHollowClose"];
    [animationKey addObject:@"cube"];
    [animationKey addObject:@"alignedCube"];
    [animationKey addObject:@"flip"];
    [animationKey addObject:@"alignedFlip"];
    [animationKey addObject:@"oglFlip"];
    [animationKey addObject:@"rotate"];
    [animationKey addObject:@"pageCurl"];
    [animationKey addObject:@"pageUnCurl"];

  //////////////////////////////////

    [animationKey enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        NSString *animationType = obj;

        NSLog(@"Animation type #%d is %@",idx,animationType);

    }];

あなたの場合: -

このようにしてみてください...

[someArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {

           bla = [someArray objectAtIndex:idx];

        }];
于 2013-06-19T07:25:44.843 に答える
2

できません。または、外部カウンターを使用してサイクルごとに手動でインクリメントすることもできますが、「クラシック」を使用する方が簡単です。

于 2013-06-19T06:55:21.113 に答える