如何处理 NSData 和 return UIImage (Swift)
How to handle NSData and return UIImage (Swift)
我正在尝试从后端数据库中的 URL 检索图像并将其转换为图像,然后 return 使用 UIImageView 的函数。我如何处理此代码中的 NSError,并且仍然 return 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!)
}
根据评论更新了我的答案。
如果您要找的图片不可用,您可以 return 一张占位符图片:
因此您的方法将如下所示:
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 和 return 下载图像作为 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()
}
我正在尝试从后端数据库中的 URL 检索图像并将其转换为图像,然后 return 使用 UIImageView 的函数。我如何处理此代码中的 NSError,并且仍然 return 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!)
}
根据评论更新了我的答案。
如果您要找的图片不可用,您可以 return 一张占位符图片:
因此您的方法将如下所示:
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 和 return 下载图像作为 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()
}