2016-12-03 3 views
0

私はイメージURLを持つ配列を持っており、すべてのイメージをダウンロードして、すべてのイメージを配列に追加してから表示する必要があります。Kingfisher Multiple Parallel Imageダウンロード

私は、単一の画像

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

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;コールバックはimages配列がURL配列mTuranと同じサイズであるときに呼び出されます。つまり、エラーがなければすべての画像がダウンロードされたことを意味します。この場合、コールバックという名前のクロージャですが、 。 – juanjo

関連する問題