我有带图片网址的数组,我需要下载所有图片,在传递给视图之前将所有图片添加到数组中。
我正在使用该代码段下载单张图片
var images: [UIImage] = []
ImageDownloader.default.downloadImage(with: URL(string: "http://abcd.com/image1.jpg")!, options: [], progressBlock: nil) {
(image, error, url, data) in
images.append(image!)
}
但这只是下载1张图片。如何在同一时间下载多个图像并在所有图像完成后运行回调?
答案 0 :(得分:4)
对于每个URL,您可以调用downloadImage
这将同时开始下载所有图像,当每个图像被提取时,您可以将其添加到图像阵列,您知道所有图像完成下载时的大小images数组与URL数组的大小相同,然后您可以调用callback
imageURLS.forEach({
ImageDownloader.default.downloadImage(with: $0, options: [], progressBlock: nil) {
(image, error, url, data) in
images.append(image!)
if images.count == imageURLS.count {
callback()
}
}
})