如果产品(代码中的标题)已经存在于" 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 {
}
}
答案 0 :(得分:0)
getFirstObjectInBackgroundWithBlock:
州的PFQuery
documentation
要执行的块。它应该具有以下参数签名:^(PFObject * object,NSError * error)。如果设置了错误,或者找不到与查询匹配的对象,则结果为nil。如果设置了结果,或者如果查询成功,但是没有找到结果,则错误将为nil。
显然,对于找不到结果的错误nil
,文档至少为partly wrong。
因此,您应该使用findObjectsInBackgroundWithBlock:
代替,因为如果找不到匹配项,则数组将为空,但不会出现error
(它将为nil
)。
如果您仍希望将结果限制为仅一个,请指定limit
1
。