Подтвердить что ты не робот

Objective-C: `continue` в блоке перечисления коллекции?

Если у меня есть NSArray, и я использую enumerateUsingBlock для циклического перемещения элементов в массиве, но в некоторых случаях мне нужно пропустить тело цикла и перейти к следующему элементу, есть ли эквивалент continue в блоке или могу ли я использовать continue напрямую?

Спасибо!

обновление:

Просто хочу уточнить, что я хочу сделать:

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

мне нужен эквивалент continue в блоке.

4b9b3361

Ответ 1

Блок очень похож на анонимную функцию. Таким образом, вы можете использовать

возврат

для выхода из функции с возвратом типа void.

Ответ 2

Используйте "продолжить" при использовании быстрого перечисления для этого.

Пример кода:

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

Не щенок в поле зрения.

Ответ 3

Вы не можете использовать continue в блоке, вы получите error: continue statement not within a loop. использовать return;

[array enumerateObjectsUsingBlock: ^(id obj, NSUInteger idx, BOOL *stop) {
        /* Do something with |obj|. */
        if (idx==1) {
            return;
    }
        NSLog(@"%@",obj);
    }];