在Parse

时间:2015-09-06 00:47:56

标签: ios xcode swift parse-platform

在我的应用程序中,我有一个tableview,用于加载用户的评论。在解析中,我有一个“评论”类。在这个类中有一个图像列(称为“图像”和单词中的注释列(称为“theComment”)。

要提交评论,用户必须在文本框中输入内容(所有评论必须包含文字)。但是,并非所有评论都必须有与之关联的图像(用户可以选择不发布图像)。这是我当前检索评论的代码:

       var query6 = PFQuery(className: "Comments")
       query6.whereKey("to_post", equalTo: post!)
       query6.findObjectsInBackgroundWithBlock({ (caption: [AnyObject]?, erreur: NSError?) -> Void in
              if erreur == nil {
               // on a réussi

             for caption in caption! {
                              self.newArray.append(caption["theComment"] as! String)
                                self.commentPhotoArray.append(caption["images"] as! PFFile)

  }
      self.tableView.reloadData()

     }
  else {
       // on n'a pas réussi
     }

})

但问题是这一行:

   self.commentPhotoArray.append(caption["images"] as! PFFile)

说“在展开可选值时意外发现nil”,因为并非保存的所有注释都包含相关图像。有没有办法解决?我尝试设置它,以便如果用户没有手动上传照片,它会保存我导入到我的图像资产的虚拟图像,而这可以工作,只要我解开图像数据(在cellforRowatIndexPath中)它识别虚拟图像并将图像视图约束的高度适当地设置为0(换句话说,不显示图像),只留下要显示的注释。关于如何解决这个问题的任何想法?

2 个答案:

答案 0 :(得分:0)

您可以尝试在打开它之前检查是否有可用的图像。我无法轻松测试此代码,因此如果您可以看到是否存在错误的错误。

   if caption["images"] != nil { 
self.commentPhotoArray.append(caption["images"] as! PFFIle)
}

答案 1 :(得分:0)

试试这个:

        var query6 = PFQuery(className: "Comments")
        query6!.whereKey("to_post", equalTo: post!)
        query6!.findObjectsInBackgroundWithBlock {
            (objects: [AnyObject]?, error: NSError?) -> Void in

            if error == nil {

                print("Successfully retrieved \(objects!.count) scores.") // This will print how many objects are in your Class.

                if (objects!.count > 0) {

                for caption in objects! {
                          self.newArray.append(caption["theComment"] as! String)
                            self.commentPhotoArray.append(caption["images"] as! PFFile)

                   }
                self.tableView.reloadData()

                } else {
                    // Log details of the failure
                    print("Error: \(error!) \(error!.userInfo)")
                }
            }
        }

我也不得不说,我印象中有人用法语编码...如果那是你或其他人的话,我很高兴,但很酷;)