NSArrayがあり、enumerateUsingBlock
を使用して配列の要素をループするが、場合によっては、ループ本体をスキップして次の要素に移動する必要がある場合、continue
に相当するものがありますか?ブロック、またはcontinue
を直接使用できますか?
ありがとう!
更新:
明確にしたいのですが、私がしたいことは:
for (int i = 0 ; i < 10 ; i++)
{
if (i == 5)
{
continue;
}
// do something with i
}
私が必要なのは、ブロック内のcontinue
と同等のものです。
ブロックは無名関数によく似ています。だからあなたは使うことができます
返す
戻り型がvoidの関数を終了します。
これを行うために高速列挙を使用する場合は、「続行」を使用します。
サンプルコード:
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
見える子犬ではありません。
ブロック内で続行を使用することはできません。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);
}];