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

Ios 如何处理NSData并返回UIImage(Swift),ios,swift,nsdata,nserror,Ios,Swift,Nsdata,Nserror,我试图从后台数据库的URL中检索图像&将其转换为图像,并返回带有UIImageView的函数。如何处理此代码中的NSError,并且仍然返回UIImageView func getImage() -> UIView { let imageLink = backendless.userService.currentUser.getProperty("Avatar") let URL = NSURL(string: imageLink as! String) le

我试图从后台数据库的URL中检索图像&将其转换为图像,并返回带有UIImageView的函数。如何处理此代码中的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()
    }

使用imageView的方法如下:
func-koloda(koloda:KolodaView,viewforcardatinex-index:UInt)->UIView{]
它必须返回UIImageView,在这种情况下,我如何实现if-let?应用程序中的行为应该是什么?当图像不可用时,它应该显示占位符还是什么?理想情况下,占位符是。更新了我的答案。getDataFromUrl在哪里定义?如果是BackEnding调用或NSData(contentsOfURL)调用go out到internet时,它们不应该是同步的。您应该编写您的方法,以使用图像作为参数进行完成闭包。