大大简化了这个问题,说我有一个由三个图像URL组成的迅速阵列,我想下载这样的信息:
let urls:[String] = [
"http://acme.com/one.jpeg",
"http://acme.com/two.jpeg",
"http://acme.com/three.jpeg",
]
for url in urls {
downloadImage(url)
}
print("all images downloaded.")
如果我想并行下载所有文件>怎么办?在阅读了有关Swift中的Grand Central Dispatch(GCD(和异步编程后,我仍然不确定如何解决该"问题"。我不想修改数组,我要实现的只是downloadImage(url)
任务的并行执行。
预先感谢。
我建议您使用dispatchgroup为此,我不知道您将如何下载图像,但是代码的示例看起来像
private func downloadAll() {
let urls:[String] = [
"http://acme.com/one.jpeg",
"http://acme.com/two.jpeg",
"http://acme.com/three.jpeg",
]
let group = DispatchGroup()
for url in urls {
group.enter()
downloadImage(url) {
group.leave()
}
}
group.notify(queue: .main) {
print("all images downloaded")
}
}
func downloadImage(_ url: String, @escaping block: () -> ()) {
// your code to download
// in completion block call block()
// it will call block in for loop to leave the group
}
希望它能帮助您,下载您可以使用SDWebimage框架,在用法中非常容易