2012-08-13 84 views
6

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

在一个for循环中,我知道你只需要将计数器的数字设置为1000就可以了。 ?例如:

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

所以没有快速列举转换成正向环路类型的事情(由我比较了[array count]你怎么能在这个过程中停止快速列举

+5

使用'break;'语句。你也可以在普通的for循环中使用它们。 – Dustin 2012-08-13 16:49:40

+3

谁告诉你为了停止'for'循环?_reset index_index_变量_!我们将不得不暂停他们的编程许可。 – 2012-08-13 17:21:19

+0

@ W'rkncacnter我自己:( – bmende 2012-08-13 18:05:23

回答

10

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; 
}]; 
+0

但块看起来更混乱... – bmende 2012-08-13 16:54:19

+4

它们很棒,在Ap中变得越来越重要Ples API。你应该熟悉它们。 – vikingosegundo 2012-08-13 16:54:51

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

难道你只是使用break语句吗?

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

     random code 
     break; 
    } 
} 
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; 
    } 
}