Beenden Sie die iteration der for-Schleife Swift-iOS
Habe ich eine Funktion mit einer for-Schleife innerhalb der it:
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.....
})
}
}
Im Grunde, was ich erreichen will ist, dass wenn wir jeden erreichen der return
Aussagen, die der code vollständig ausgeführt wurde, für diese Besondere link
in die Schleife, und die Schleife bewegt sich auf den nächsten link. Wenn KEINE return-Anweisungen erreicht werden, ich will die dltask
ausgeführt werden. Ich konnte erreichen, dies mit einer Reihe von anderen Aussagen, aber ich denke, das würde den code ziemlich chaotisch. Tue ich das richtige mit Hilfe return
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du suchst
continue
:Vom Apple Swift-Buch:
Ersetzen Sie einfach
return
mitcontinue
und es geht zurück bis zu denfor
Schleife und führen Sie es erneut mit dem nächsten link.Können Sie
break outer
oder nurbreak
zum verlassen der loop-Anweisung und führen Sie die dltask .hoffe, es hilft .