如果对象不存在,请从Parse.com查询

时间:2015-09-13 20:06:48

标签: xcode swift parse-platform

这是我的解析代码:

func queryFromParse(){
        //var query = PFQuery(className: "Posts")
        var query = PFQuery(className: "currentUploads")
        query.orderByDescending("createdAt")
        query.findObjectsInBackgroundWithBlock { (objects:[AnyObject]?, error:NSError?) -> Void in
            if error == nil
            {
                if let newObjects = objects as? [PFObject] {

                    for oneobject in newObjects {
                        let text = oneobject["imageText"] as! String
                        let username = oneobject["username"] as! String
                        let time = oneobject.createdAt!
                        let userImage = oneobject["imageFile"] as! PFFile
                        let imageURL = userImage.url // <- Bruker nå userImage.URL, henter ikke bildefilen med en gang

                        var OneBigObject = Details(username: username, text: text, CreatedAt: time, image: imageURL!)

                        self.arrayOfDetails.append(OneBigObject)

                        dispatch_async(dispatch_get_main_queue()) { self.collectionView.reloadData() }

                    }
                }
            }
        }
    }

我在代码中遇到错误:

let userImage = oneobject["imageFile"] as! PFFile
  

致命错误:在解包可选值时意外发现nil

我知道原因,因为解析中的一行不包含图像: enter image description here

有什么想法吗?如果那里没有图像,我该怎么办才能不崩溃?

3 个答案:

答案 0 :(得分:1)

在这里,尝试一下这个:

func queryFromParse(){
        var query = PFQuery(className: "currentUploads")
        query.orderByDescending("createdAt")
        query.findObjectsInBackgroundWithBlock { (objects:[AnyObject]?, error:NSError?) -> Void in
            if error == nil
            {
                if let newObjects = objects as? [PFObject] {

                    for oneobject in newObjects {
                        let text = oneobject["imageText"] as! String
                        let username = oneobject["username"] as! String
                        let time = oneobject.createdAt!

                        if let userImage = oneobject["imageFile"] as? PFFile {
                            let userImage = oneobject["imageFile"] as! PFFile

                            let imageURL = userImage.url // <- Bruker nå userImage.URL, henter ikke bildefilen med en gang

                            var OneBigObject = Details(username: username, text: text, CreatedAt: time, image: imageURL!)

                            self.arrayOfDetails.append(OneBigObject)

                            dispatch_async(dispatch_get_main_queue()) { self.collectionView.reloadData() }
                        }
                    }
                }
            }
        }
    }

答案 1 :(得分:0)

可选择打开该对象:

let imageFile = oneobject["imageFile"] as PFFile
imageFile.getDataInBackgroundWithBlock {
  (imageData: NSData?, error: NSError?) -> Void in
  if error == nil {
    if let imageData = imageData {
        let image = UIImage(data:imageData)
    }
  }
}

答案 2 :(得分:0)

尝试使用此

if let userImage = oneobject["imageFile"] as? PFFile {
            let imageURL = userImage.url
        }