44

NSArray がありenumerateUsingBlock、配列内の要素をループするために使用しますが、場合によってはループ本体をスキップして次の要素に移動する必要がある場合continue、ブロックに同等のものはありますか、それともcontinue直接使用できますか?

ありがとう!

アップデート:

明確にしたいのですが、私がやりたいことは次のとおりです。

for (int i = 0 ; i < 10 ; i++)
{
    if (i == 5)
    {
        continue;
    }
    // do something with i
}

私が必要とするのは、continue同等のブロックです。

4

3 に答える 3

74

ブロックは無名関数によく似ています。だからあなたが使うことができます

戻る

戻り型 void で関数を終了します。

于 2012-11-09T06:55:25.287 に答える
10

Fast Enumeration を使用してこれを行う場合は、「continue」を使用します。

サンプルコード:

NSArray *myStuff = [[NSArray alloc]initWithObjects:@"A", @"B",@"Puppies", @"C", @"D", nil];

for (NSString *myThing in myStuff) {
    if ([myThing isEqualToString:@"Puppies"]) {
        continue;
    }

    NSLog(@"%@",myThing);

}

そして出力:

2015-05-14 12:19:10.422 test[6083:207] A
2015-05-14 12:19:10.423 test[6083:207] B
2015-05-14 12:19:10.423 test[6083:207] C
2015-05-14 12:19:10.424 test[6083:207] D

子犬は見えません。

于 2015-05-14T16:25:14.733 に答える
5

ブロック内で continue を使用することはできません error: continue statement not within a loop。リターンを使用します。

[array enumerateObjectsUsingBlock: ^(id obj, NSUInteger idx, BOOL *stop) {
        /* Do something with |obj|. */
        if (idx==1) {
            return;
    }
        NSLog(@"%@",obj);
    }];
于 2012-11-09T07:15:21.900 に答える