Swift 3:如何使用带有API的URL显示图像

时间:2016-12-07 12:54:29

标签: swift

我尝试显示图片但发生以下错误:

  

错误:致命错误:在打开时意外发现nil   可选值

var imageURL:UIImageView!
override func viewDidLoad() {
    super.viewDidLoad()
    let url = NSURL(string:"http://cdn.businessoffashion.com/site/uploads/2014/09/Karl-Lagerfeld-Self-Portrait-Courtesy.jpg")
    let data = NSData(contentsOfURL:url!)
    if data!= nil {
        imageURL.image = UIImage(data:data!)
    }
}

1 个答案:

答案 0 :(得分:0)

来自apple docs:

  

重要

     

请勿使用此同步方法来请求基于网络的网址。对于基于网络的URL,此方法可以在慢速网络上阻止当前线程持续数十秒,从而导致用户体验不佳,而在iOS中,可能会导致应用程序被终止。

     

相反,对于非文件URL,请考虑使用NSURLSession类的dataTaskWithURL:completionHandler:方法。有关详细信息,请参阅URL会话编程指南。

也许考虑使用Alamofire来完成这项任务?

Alamofire.request(.GET, "http://cdn.businessoffashion.com/site/uploads/2014/09/Karl-Lagerfeld-Self-Portrait-Courtesy.jpg").response { (request, response, data, error) in
    self.imageURL.image = UIImage(data: data, scale:1)
}