【问题标题】:Problems When Trying to display images from Parse using Swift尝试使用 Swift 从 Parse 显示图像时出现问题
【发布时间】: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。

标签: ios image swift parse-platform


【解决方案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
猜你喜欢
  • 1970-01-01
  • 2018-02-13
  • 2022-12-16
  • 1970-01-01
  • 1970-01-01
  • 2017-09-12
  • 1970-01-01
  • 2015-07-24
  • 2021-11-03
相关资源
最近更新 更多