你如何停止快速枚举?

时间:2012-08-13 16:46:20

标签: objective-c for-loop for-in-loop fast-enumeration

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

在for循环中,我知道你只需将计数器数设置为千元左右。 例如:

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

所以没有将快速枚举转换为正向循环类型的东西(通过将i与[array count]进行比较,如何在过程中停止快速枚举?

4 个答案:

答案 0 :(得分:11)

from the docs

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

如果要在达到某个索引时结束枚举,block-based enumeration可能会更好,因为它会在枚举时为您提供索引:

[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    //…
    if(idx == 1000) 
        *stop = YES;
}];

答案 1 :(得分:2)

for (id object in collection) {
  if (condition_met) {
    break;
  }
}

答案 2 :(得分:1)

难道你不能只使用break语句吗?

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

        random code
        break;
    }
}

答案 3 :(得分: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;
    }
}