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

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

示例代码:

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 回答