下载的图片未显示 iOS Swift

Downloaded image not being displayed iOS Swift

我刚刚开始学习如何在 iOS Swift 中发出网络请求。下面是一个非常简单的图像请求,似乎一切正常。该任务下载图像时没有错误,但 imageView 从不显示下载的图像。任何帮助将不胜感激。

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var imageView: UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()

        let imageURL = NSURL(string: "https://en.wikipedia.org/wiki/Baseball#/media/File:Angels_Stadium.JPG")!

        let task = NSURLSession.sharedSession().dataTaskWithURL(imageURL) { (data, response, error) in
            if error == nil {
                let downloadedImage = UIImage(data: data!)
                performUIUpdatesOnMain {
                    self.imageView.image = downloadedImage
                }
            }
        }
        task.resume()
    }
}

如果您从 NSURLSession 收到错误,您当前的代码将无提示地失败。不要那样做。

在数据任务的完成块中添加打印语句,记录错误值和数据值。将数据转换为图像后,还要记录 downloadedImage。

最后,向我们展示您的 performUIUpdatesOnMain 函数的代码。

除了您使用的 错误 URL 之外,您的代码工作正常,因此您的 downloadedImage 即将推出 nil 因为它不能为这个数据创建一个 UIImage,所以正确的 URL 是:

https://upload.wikimedia.org/wikipedia/commons/thumb/9/98/Angels_Stadium.JPG/1920px-Angels_Stadium.JPG

将您的代码更新为上面的代码,一切都应该可以正常工作:

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    let imageURL = NSURL(string: "https://upload.wikimedia.org/wikipedia/commons/thumb/9/98/Angels_Stadium.JPG/1920px-Angels_Stadium.JPG")!

    let task = NSURLSession.sharedSession().dataTaskWithURL(imageURL) { (data, response, error) in

        guard error == nil, let data = data else { return }

        let downloadedImage = UIImage(data: data)
        dispatch_async(dispatch_get_main_queue()) {
            self.imageView.image = downloadedImage
        }
    }
    task.resume()
}

希望对你有所帮助。