我有一个带有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
?
答案 0 :(得分:34)
您正在寻找continue
:
continue语句告诉循环停止它正在做什么并开始 再次在循环的下一次迭代开始时。它说 “我完成了当前的循环迭代”而没有离开循环 共
只需将return
替换为continue
,它将返回到for
循环并使用下一个链接重新运行。
答案 1 :(得分:12)
您可以使用break outer
或仅使用break
来退出循环语句并执行dltask。