2016-09-23 108 views
3

我被困在如何正確使用URLSession任務下載J.S.Bach圖像到UIImage。 這是viewDidLoad的代碼。沒有崩潰發生。程序永遠不會到達最內層的if語句,並且UIImageView保持空白。無法使用URLSession下載圖像

let url = URL(string: "https://it.wikipedia.org/wiki/File:Johann_Sebastian_Bach.jpg") 
let request = URLRequest(url: url!) 
let task = URLSession.shared.dataTask(with: request, completionHandler: {(data, response, error) -> Void in 
    if error != nil { 
     print("some error!") 
    } else { 
     if let bach = UIImage(data: data!) { 
      self.image.image = bach 
     } 
    } 
}) 
task.resume() 
+0

檢查響應。 –

+0

嘗試使用此網址,因爲您正在使用的網址會返回網頁。 https://upload.wikimedia.org/wikipedia/commons/6/6a/Johann_Sebastian_Bach.jpg – Michael

回答

3

您正試圖將網頁加載到UIImage實例中。我懷疑你的URLRequest工作正常,但行if let bach扼流圈,因爲你試圖創建一個UIImage出一些HTML。我意識到維基百科URL的路徑擴展名中有「.jpg」,但它仍指向HTML頁面。

要解決您的問題,請嘗試更改URL爲https://upload.wikimedia.org/wikipedia/commons/6/6a/Johann_Sebastian_Bach.jpg - 這就是您要查找的實際JPEG文件。

+1

太棒了!您的建議有效。服務器響應報告「Content-Type」=「text/html; charset = UTF-8」;相反,如果網址不錯,則回覆報告「Content-Type」=「image/jpeg」。謝謝! –

+0

很高興聽到它! – TwoStraws