2016-09-11 30 views
5

Tôi có một chức năng với một vòng lặp for bên trong của nó:Exit lần lặp của vòng lặp for Swift iOS

func example() { 
    // create tasks 
    for link in links { 
    let currIndex = links.indexOf(link) 

    if let im = story_cache?.objectForKey(link) as? UIImage { 
     if ((currIndex != nil) && (currIndex < content.count)) { 
     if (content[currIndex!].resource_type == "image") { 
      content[currIndex!].image = im 
      return 
     } 
     } 
    } else { 
     if ((currIndex != nil) && (currIndex < content.count)) { 
     if (content[currIndex!].resource_type == "video") { 
      let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) 
      let documentsDirectory : NSString = paths[0] 
      let appFile = documentsDirectory.stringByAppendingPathComponent(content[currIndex!].id! + ".mov") 
      let local_URL = NSURL(fileURLWithPath: appFile) 
      if let cached_URL = story_cache?.objectForKey(local_URL) as? NSURL { 
      content[currIndex!].videoURL = cached_URL 
      return 
      } 
     } 
     } 
    } 

    let dltask = session.dataTaskWithURL(link, completionHandler: { (data, response, error) in 
     // MORE CODE..... 
    }) 
    } 
} 

Về cơ bản những gì tôi muốn đạt được là nếu chúng ta đạt được bất kỳ của return báo cáo mã kết thúc thực hiện cho điều này cụ thể là link trong vòng lặp và vòng lặp chuyển sang liên kết tiếp theo. Nếu không đạt được các báo cáo trả về, tôi muốn thực hiện dltask. Tôi có thể đạt được điều này bằng cách sử dụng một loạt các báo cáo khác nhưng tôi nghĩ rằng sẽ làm cho mã khá lộn xộn. Tôi có đang thực hiện quyền này với việc sử dụng return không?

Trả lời

14

Bạn đang tìm kiếm continue:

Từ Apple's Swift Book:

Các lệnh continue kể một vòng lặp để ngăn chặn những gì nó đang làm và bắt đầu lại vào đầu phiên bản kế tiếp thông qua các vòng lặp . Nó nói "Tôi đã thực hiện với vòng lặp lặp hiện tại" mà không cần rời khỏi vòng lặp hoàn toàn.

Chỉ cần thay thế return bằng continue và nó sẽ quay lại vòng lặp for và chạy lại lần nữa bằng liên kết tiếp theo.

5

Bạn có thể sử dụng break outer hoặc chỉ break để thoát khỏi câu lệnh vòng lặp và thực thi dltask.

hy vọng điều đó sẽ hữu ích.

Các vấn đề liên quan