Objective-C:集合枚举块中的`continue`?

时间:2012-11-09 06:47:55

标签: objective-c ios nsarray objective-c-blocks

如果我有一个NSArray并使用enumerateUsingBlock循环遍历数组中的元素,但在某些情况下我需要跳过循环体并转到下一个元素,是否有任何continue等价物在块中,或者我可以直接使用continue吗?

谢谢!

更新

只想澄清一下,我想做的是:

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

我需要的是块中的continue等价物。

3 个答案:

答案 0 :(得分:67)

一个块很像匿名函数。所以你可以使用

  

返回

退出函数,返回类型为void。

答案 1 :(得分:8)

使用“快速枚举”执行此操作时,请使用“继续”。

示例代码:

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

看不到小狗。

答案 2 :(得分:5)

你不能在块中继续使用,你将获得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);
    }];