У меня есть функция с цикл внутри него:Выход итерация для цикла 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.....
})
}
}
В основном то, что я хочу достичь в том, что если мы достигаем какой-либо из return
заявлений код завершения выполнения для этого конкретный link
в цикле, и цикл переходит к следующей ссылке. Если NONE из операторов возврата достигнуто, я хочу выполнить dltask
. Я мог бы достичь этого, используя кучу других заявлений, но я думаю, что это сделает код довольно грязным. Правильно ли я делаю это с помощью return
?