2016-09-23 107 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