その中に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
のコードの実行が終了し、ループが次のリンクに移動することです。 return文のどれにも達していない場合、dltask
を実行したいです。たくさんのelseステートメントを使用してこれを実現できましたが、コードが非常に面倒になると思います。 return
を使用してこれを正しく行っていますか?
continue
を探しています:
から AppleのSwift Book :
Continueステートメントは、ループに実行中の処理を停止し、ループの次の反復の開始時に再び開始するように指示します。ループを完全に終了することなく、「現在のループの反復処理が完了しました」と表示されます。
return
をcontinue
に置き換えるだけで、for
ループに戻り、次のリンクで再度実行します。
ループステートメントを終了してdltaskを実行するには、break outer
またはbreak
のみを使用できます。
それが役立つことを願っています。