2016-12-03 79 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