2016-05-14 71 views
1

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

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() 
    } 
} 
+1

什么是你的功能切换到主,显示代码,是图像设置线叫? – Wain

+0

这是特定的下载?如果您只是在'viewDidLoad'的主体中设置了一个包中的图像,会发生什么?你应该提供更多的细节,或至少告诉你已经尝试了什么。 –

回答

3

您的代码工作正常,除了事实上,你正在使用错误的URL并为您downloadedImage即将nil,因为它无法为该数据创建一个UIImage,正确的网址是:

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

我希望这对你有所帮助。

+0

好点的侦探工作!我没有想过检查代码中提供的URL,但你是对的。 (投票) –

+0

@DuncanC我检查,因为除了URL的事实,一切都很好,谢谢:) –

+0

“我检查过,因为代码中的一切都很好......”这是什么意思?如果您需要帮助调试问题,请提供您所尝试的内容以及获得的结果的完整说明。如果您有印刷声明以确保您没有发生错误,请告诉我们。尝试播放20个问题来帮助你是对每个人时间的极大浪费。 –

1

如果您从NSURLSession中收到错误,那么您当前的代码将以无提示方式失败。不要这样做。

在数据任务的完成块中添加一条打印语句,该语句记录错误和数据的值。一旦将数据转换为图像,也会记录下载的图像。

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

+0

他说图像下载,所以'NSURLSession'应该没问题。但要求'performUIUpdatesOnMain'确实非常好。 –

+0

他说:“任务下载图像没有任何错误”,但如果代码只是在没有做任何事情的情况下发生,如果出现错误,他不能分辨这是真的还是没有。 –