尝试使用 Swift 从 Parse 显示图像时出现问题
Posted
技术标签:
【中文标题】尝试使用 Swift 从 Parse 显示图像时出现问题【英文标题】:Problems When Trying to display images from Parse using Swift 【发布时间】:2015-06-16 17:34:01 【问题描述】:我正在尝试使用 swift 显示来自解析的图像。这是我的代码:
var query = PFQuery(className: "Maps")
query.getObjectInBackgroundWithId("1234asdf3456")
(object: PFObject?, error: NSError?) -> Void in
if error == nil
println(object)
var objectAsPF = object as PFObject!
let file = objectAsPF["imageFile"] as! PFFile
file.getDataInBackgroundWithBlock
(imageData:NSData?, error:NSError?) -> Void in
if error == nil
if let imageData = imageData
let map:UIImage = UIImage(data: imageData)!
self.MapView.image = map
println("success")
else
println(error)
我在 println("success") 处设置了一个断点,并检查了变量值,一切都很好,直到我尝试将 imageData 转换为 UIImage。有什么建议吗?
【问题讨论】:
错误是什么,您要在哪里转换? 删除这一行 'if let imageData = imageData' 和那一行的 。 没有错误,图像根本没有出现在屏幕上。 MapView 是一个图像视图,我尝试使用 UIImage(数据:imageData)将 NSData 转换为 UIImage。当我在代码中设置断点时,我看到 NSData 不是 nil,但图像是 nil。 【参考方案1】:使用此代码从解析中检索图像,然后将其从 PFFile 转换为 UIImage...
var query = PFQuery(className:"Maps")
query.findObjectsInBackgroundWithBlock
(objects: [AnyObject]?, error: NSError?) -> Void in
if error == nil
// The find succeeded.
self.scored = objects!.count
// Do something with the found objects
if let objects = objects as? [PFObject]
for object in objects
let userImageFile = object["imageFile"] as! PFFile
userImageFile.getDataInBackgroundWithBlock
(imageData: NSData?, error: NSError?) -> Void in
if error == nil
if let imageData = imageData
let image = UIImage(data:imageData)
if image != nil
self.imageArray.append(image!)
else
// Log details of the failure
println("Error: \(error!) \(error!.userInfo!)")
dispatch_async(dispatch_get_main_queue())
println("Finished Loading Image")
【讨论】:
您好,只是关于此代码的几个问题。 self.scored 的目的是什么?另外 dispatch_async(dispatch_get_main_queue()) 的目的是什么 另外,当我运行此代码时,我得到一个致命错误:在展开可选值时意外发现 nil以上是关于尝试使用 Swift 从 Parse 显示图像时出现问题的主要内容,如果未能解决你的问题,请参考以下文章
Swift 2.0:需要在 Parse 的 PFQueryTableViewController 上显示图像(PFFile)?
使用 getdatainbackground 从 Parse 检索多个图像(IOS - Swift)