6

一旦你得到你想要的东西,你将如何停止快速枚举。

在 for 循环中,我知道您只需将计数器编号设置为 100 或其他值。例子:

for (int i=0;i<10;i++){
    if (random requirement){
        random code
        i=1000;
    }
}

因此,无需将快速枚举转换为前向循环类型的事物(通过将 i 与[array count]如何在过程中停止快速枚举进行比较?

4

4 回答 4

11

从文档

for (NSString *element in array) {
    if ([element isEqualToString:@"three"]) {
        break;
    }
}

如果您想在达到某个索引时结束枚举,基于块的枚举可能会更好,因为它在枚举时为您提供索引:

[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    //…
    if(idx == 1000) 
        *stop = YES;
}];
于 2012-08-13T16:48:33.847 回答
2
for (id object in collection) {
  if (condition_met) {
    break;
  }
}
于 2012-08-13T16:48:57.870 回答
1

你不能只使用一个break语句吗?

for (int x in /*your array*/){
    if (random requirement){

        random code
        break;
    }
}
于 2012-08-13T16:50:55.580 回答
1

只需为嵌套循环添加它,内部循环上的中断就会中断该循环。外循环将继续。如果你想完全爆发,你可以这样做:

BOOL flag = NO;
for (NSArray *array in arrayOfArrays) {
    for (Thing *thing in array) {
        if (someCondition) {
            // maybe do something here
            flag = YES;
            break;
        }
    }
    if (flag) {
        break;
    }
}
于 2013-09-22T19:02:30.317 回答