我一直在研究如何正确使用URLSession任务将J.S.Bach图像下载到UIImage中。
这是viewDidLoad内的代码。没有崩溃发生。程序永远不会到达最里面的if语句,并且UIImageView保持空白。

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()

最佳答案

您正在尝试将网页加载到UIImage实例中。我怀疑您的URLRequest正常工作,但是if let bach这一行令人窒息,因为您正在尝试使用某些HTML创建UIImage。我知道Wikipedia URL的路径扩展名中带有“.jpg”,但它仍指向HTML页面。

要解决您的问题,请尝试将URL更改为https://upload.wikimedia.org/wikipedia/commons/6/6a/Johann_Sebastian_Bach.jpg-这是您要查找的实际JPEG文件。

10-07 21:53