如何处理NSData并返回UIImage(Swift)

我试图从后端数据库的URL检索图像,并将其转换成图像,并返回与UIImageView的function。 如何处理这个代码中的NSError,并仍然返回UIImageView?

func getImage() -> UIView { let imageLink = backendless.userService.currentUser.getProperty("Avatar") let URL = NSURL(string: imageLink as! String) let data = NSData(contentsOfURL: URL!) let image: UIImage! image = UIImage(data: data!) return UIImageView(image: image!) } 

根据评论更新我的答案。

如果您正在查找的图片不可用,则可以返回占位符图片:

所以你的方法如下所示:

 func getImage() -> UIImage { var imageLink = backendless.userService.currentUser.getProperty("Avatar") guard let imageUrl = imageLink as? String, let URL = NSURL(string: imageUrl), let data = NSData(contentsOfURL: URL) else { return UIImage(named: "placeholder") } return UIImage(data: data) } 

这里是你如何使用它:

 func koloda(koloda: KolodaView, viewForCardAtIndex index: UInt) -> UIView { return UIImageView(image: getImage()) } 

您可以从URL下载图像,并使用此代码作为UIImage返回。 希望这可以帮助:

 func downloadImage(url: NSURL) -> UIImage { getDataFromUrl(url) { (data, response, error) in dispatch_async(dispatch_get_main_queue()) { () -> Void in guard let data = data where error == nil else { return } let image:UIImage = UIImage(data: data)! return image } } } 

更新:这是getDataFromUrl函数

 func getDataFromUrl(url:NSURL, completion: ((data: NSData?, response: NSURLResponse?, error: NSError? ) -> Void)) { NSURLSession.sharedSession().dataTaskWithURL(url) { (data, response, error) in completion(data: data, response: response, error: error) }.resume() }