2016-12-03 7 views
0

이미지 URL이있는 배열이있어서 모든 이미지를 다운로드하고보기 위해 전달하기 전에 배열에 모두 추가해야합니다.킹 피셔 다중 병렬 이미지 다운로드

나는 하나의 이미지

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!) 
     } 

을 다운로드 그 조각을 사용하고 있지만, 이것은 단지 한 이미지를 다운로드합니다. 동시에 여러 이미지를 다운로드하고 모두 끝난 후 콜백을 실행하려면 어떻게해야합니까?

답변

4

각 URL에 대해 downloadImage으로 전화를 걸면 동시에 모든 이미지를 다운로드 할 수 있습니다. 이미지를 가져올 때 이미지 어레이에 이미지를 추가 할 수 있습니다. 모든 이미지는 이미지 어레이의 크기 URL 배열의 크기와 같습니다. 그러면

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