退出for循环Swift iOS的迭代

时间:2016-09-11 13:45:02

标签: ios swift for-loop return break

我有一个带有for循环的函数:

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.....
    })
  }
}

基本上我想要实现的是,如果我们到达任何return语句,代码就会在循环中完成对此特定link的执行,并且循环移动到下一个链接。如果达到了返回语句的NONE,我希望执行dltask。我可以使用一堆else语句来实现这一点,但我认为这会使代码变得非常混乱。我是否正确使用return

2 个答案:

答案 0 :(得分:34)

您正在寻找continue

来自Apple's Swift Book

  

continue语句告诉循环停止它正在做什么并开始   再次在循环的下一次迭代开始时。它说   “我完成了当前的循环迭代”而没有离开循环   共

只需将return替换为continue,它将返回到for循环并使用下一个链接重新运行。

答案 1 :(得分:12)

您可以使用break outer或仅使用break来退出循环语句并执行dltask。

希望它有所帮助。

相关问题