2012-08-13 18 views
6

Làm thế nào bạn sẽ ngừng liệt kê nhanh một khi bạn đã nhận được những gì bạn đang tìm kiếm.Làm thế nào để bạn ngừng đếm nhanh?

Trong vòng lặp for, tôi biết bạn chỉ cần đặt số lượt truy cập thành một nghìn hoặc một thứ gì đó. Ví dụ:

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

như vậy mà không chuyển đổi kiểu liệt kê nhanh vào một loại vòng lặp điều phía trước (bằng cách so sánh tôi với [array count] làm thế nào bạn có thể ngăn chặn một liệt kê nhanh trong quá trình này

+5

Sử dụng câu lệnh 'ngắt; '. Bạn có thể sử dụng chúng trong các vòng lặp thông thường của bạn. – Dustin

+3

Ai bảo bạn _reset biến index_ để ngăn chặn một vòng lặp 'for' ?! Chúng ta sẽ phải đình chỉ giấy phép lập trình của họ. –

+0

@ W'rkncacnter bản thân mình: ( – bmende

Trả lời

10

from the docs

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

nếu bạn muốn kết thúc liệt kê khi đạt được một chỉ mục nhất định, block-based enumeration có thể tốt hơn, vì nó cung cấp cho bạn chỉ mục trong khi liệt kê:

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

nhưng các khối trông khó hiểu hơn ... – bmende

+4

chúng rất tuyệt vời và ngày càng trở nên quan trọng trong Ap API ples. bạn nên làm quen với họ. – vikingosegundo

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

Bạn không thể sử dụng câu lệnh ngắt?

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

     random code 
     break; 
    } 
} 
1

Chỉ cần thêm cho vòng lặp lồng nhau, ngắt trên vòng lặp bên trong chỉ phá vỡ vòng lặp đó. Các vòng lặp bên ngoài sẽ tiếp tục. Nếu bạn muốn thoát ra hoàn toàn, bạn có thể làm như vậy:

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; 
    } 
} 
Các vấn đề liên quan