2012-08-13 15 views
6

¿Cómo podría detener la enumeración rápida una vez que haya obtenido lo que está buscando.¿Cómo se detiene la enumeración rápida?

En un bucle for, sé que acaba de configurar el número de contador como miles o algo así. Ejemplo:?

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

modo sin necesidad de convertir la enumeración rápida en una cosa de tipo bucle delantero (comparando I de la [array count] ¿cómo se puede detener una enumeración rápida en el proceso

+5

Use una declaración 'break;'. Puedes usar estos en tus bucles for-for normales también. – Dustin

+3

¿Quién te dijo que "restablezcas la variable índice" para detener un ciclo 'for' ?! Tendremos que suspender su licencia de programación. –

+0

@ W'rkncacnter yo mismo :( – bmende

Respuesta

10

from the docs

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

si desea finalizar la enumeración cuando se alcanza un determinado índice, block-based enumeration podría ser mejor, ya que le proporciona el índice al enumerar:

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

pero los bloques se ven más confusos ... – bmende

+4

son geniales y se vuelven más y más importantes en Ap ples API. deberías familiarizarte con ellos. – vikingosegundo

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

No se pudo usted sólo tiene que utilizar una sentencia break?

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

     random code 
     break; 
    } 
} 
1

Solo añadiendo eso para los bucles anidados, un corte en un bucle interno rompe ese bucle. Los bucles externos continuarán. Si quiere salir completamente, puede hacerlo así:

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; 
    } 
} 
Cuestiones relacionadas