如何解决错误"没有与查询匹配的结果"在Swift with Parse

时间:2016-01-02 12:18:01

标签: ios swift parse-platform

如果产品(代码中的标题)已经存在于" groups_products&#34 ;;的类中,我尝试将(detailsObj)添加到username_list中;否则,我会在我的班级和(detailsObj)中添加一个产品。 一切都运作良好,但错误"没有结果与查询匹配"显示。这对我来说很有意义,因为如果没有与查询匹配的结果,我会在我的课程中添加一个产品。但是,我不知道有什么方法可以解决这个错误吗?

let detailsObj = PFObject(className: "products")
let title = 1 <<==(example)

 ........
let query = PFQuery(className: "grouped_products")
query.whereKey("title", equalTo: title)
query.getFirstObjectInBackgroundWithBlock{ (titleInParse: PFObject?, error:NSError?) -> Void in
    if titleInParse != nil{
        titleInParse!.addObjectsFromArray([detailsObj], forKey: "username_list")
        titleInParse?.saveInBackgroundWithBlock({ (success: Bool?, error:NSError?) -> Void in
            loadingNotification.hide(true)
            if (error != nil){
                self.appDelegate.displayMyAlertMessage(error!.localizedDescription, userVI: self)
                return
            } else {
                self.appDelegate.displayMyAlertMessage("Sent", userVI: self)
            }
        })
    } else if titleInParse == nil {
        let grouped_product = PFObject(className: "grouped_products")
        grouped_product["title"] = title
        grouped_product.addUniqueObject(detailsObj, forKey: "username_list")
        grouped_product.saveInBackgroundWithBlock({ (success: Bool?, error:NSError?) -> Void in
            if (error != nil){
                self.appDelegate.displayMyAlertMessage(error!.localizedDescription, userVI: self)
                return
            } else {
                self.appDelegate.displayMyAlertMessage("Sent", userVI: self)
            }
        })
    } else {
    }
}

1 个答案:

答案 0 :(得分:0)

getFirstObjectInBackgroundWithBlock:州的PFQuery documentation

  

要执行的块。它应该具有以下参数签名:^(PFObject * object,NSError * error)。如果设置了错误,或者找不到与查询匹配的对象,则结果为nil。如果设置了结果,或者如果查询成功,但是没有找到结果,则错误将为nil。

显然,对于找不到结果的错误nil,文档至少为partly wrong

因此,您应该使用findObjectsInBackgroundWithBlock:代替,因为如果找不到匹配项,则数组将为空,但不会出现error(它将为nil)。

如果您仍希望将结果限制为仅一个,请指定limit 1