【问题标题】:Querying values that may be nil in Parse查询 Parse 中可能为 nil 的值
【发布时间】:2015-09-06 00:47:55
【问题描述】:

在我的应用程序中,我有一个从用户那里加载 cmets 的 tableview。在解析中,我有一个“评论”类。在这个类中,有一列图片(称为“images”)和一列文字评论(称为“theComment”)。

为了提交评论,用户必须在文本框中输入一些内容(所有 cmets 必须有单词)。但是,并非所有 cmets 都必须有与其关联的图像(用户可以选择不发布图像)。这是我当前检索 cmets 的代码:

       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”,因为并非所有保存的 cmets 都有关联的图像。有没有办法解决?我尝试设置它,以便如果用户不手动上传照片,它会保存一个我导入到我的图像资产的虚拟图像,只要我解开图像数据(在 cellforRowatIndexPath 中)它就可以工作识别虚拟图像并适当地将图像视图约束的高度设置为 0(换句话说,不显示图像),只留下要显示的注释。关于如何解决这个问题的任何想法?

【问题讨论】:

    标签: ios xcode swift parse-platform


    【解决方案1】:

    您可以在打开包装之前尝试检查是否有可用的图像。我无法轻松测试此代码,因此如果您能查看是否有错误,那就太好了。

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

    【讨论】:

    • 有时 != nil 不起作用,您必须使用不同的测试方法来查看标题 ["images"] 中是否有图像。
    • 在编译之前或在模拟器或设备上加载应用程序之后,哪个部分不起作用?
    • 如果caption["images"]返回一个数组,你应该使用caption["images"]?.isEmpty == false
    • 抱歉,我应该说得具体点。它不起作用,这意味着它返回“致命错误 - 在展开可选值时意外发现 nil”。它在视图加载之前执行此操作(我在 viewDidLoad 中调用执行此操作的方法)。桑托什,我现在就试试。
    • @Santhosh 我刚刚尝试过,但仍然收到“在展开可选值时意外发现 nil”消息。错误发生在 if caption["images"]!.isEmpty == false { 它没有发生在 self.commentPhotoArray.append(caption["images"] as!PFFIle) 行。
    【解决方案2】:

    试试这个:

            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)")
                    }
                }
            }
    

    我还不得不说,有人用法语编码给我留下了深刻的印象......如果那是你或其他人,我想知道,但很酷;)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-11
      • 1970-01-01
      相关资源
      最近更新 更多