2016-12-03 77 views
0

我有图像网址阵列,我需要下载所有图像,在传递查看之前将它们全部添加到数组。翠鸟多个并行图像下载

我使用的片段下载单个图像

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个图像。如何在同一时间下载多个图像并在所有图像完成后运行回调?

回答

4

对于每个URL,你可以调用downloadImage这将开始下载所有图像在同一时间,当每个图像被提取,你可以将它添加到图像数组,你知道所有图像完成下载时,图像数组的大小与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() 
     } 
    } 
}) 
+0

我需要在所有任务完成后运行回调,谢谢。 – mTuran

+0

你是对的Gert;当图像数组的大小与URL数组mTuran大小相同时,这意味着所有图像完成下载,如果没有错误,当然这里是一个名为'callback'的闭包,但它可以是一个函数。 – juanjo