2017-07-04 54 views
1

我使用DispatchQueue.global()從存儲在陣列URL網址下載圖像下載圖像時,這些步驟如下:可選發現無使用DispatchQueue SWIFT 3

Array of urls --> let data = contentsOf: array[url] --> display img 

但是我得到的這樣的錯誤,請檢查下面的圖片:

Problem

,這就是獲得打印出:

fatal error: unexpectedly found nil while unwrapping an Optional value 

代碼文本格式:

func updateView(){ 

    for i in 0..<testArray1.count { 

     let ImgUrl = URL (string: testArray1[i])! 

     DispatchQueue.global().async { 

      do { 

       let data = try Data(contentsOf: ImgUrl) 
       DispatchQueue.global().sync { 

        self.imgArr.append(UIImage(data: data)!) 

       } 

      } catch { 
       //handle the error 
      } 
     } 

    } 
} 

希望這可以幫助你幫助我。

感謝你在先進

回答

0

這有可能是你得到了數據,但不能沒有創造的形象。試試這個

 DispatchQueue.global().sync { 
      for i in 0..<testArray1.count { 
       let imgUrl = URL(string: testArray1[i])! 

       do { 
        let data = try Data(contentsOf: imgUrl as URL) 
        if let image = UIImage(data: data) { 
         imgArr.append(image) 
        } 
       } catch { 
        print("Unable to load data: \(error)") 
       } 
      } 
     } 
+0

這工作得很好,不過,我從數組抓取162個圖像和URL是在線,反正是有顯示已添加到圖像陣列,而其他正在下載的圖像? @Lawliet –

+0

好吧,這聽起來像是另一個問題,但無論如何,您可以創建一個緩存數組來存儲圖像並顯示您加載的內容。看看這個例子http://www.kaleidosblog.com/uicollectionview-image-gallery-download-and-display-images-inside-the-cell – Lawliet

+0

嗯,我知道另一個questiion對不起 –