如何通过 PFQuery 从 Parse 中删除对象
Posted
技术标签:
【中文标题】如何通过 PFQuery 从 Parse 中删除对象【英文标题】:How to delete object from Parse via PFQuery 【发布时间】:2016-10-15 18:40:26 【问题描述】:只有当对象属于当前用户并且 requestResponded 不等于 true 时,我才尝试通过 swift 从类 UserRequests 中删除对象。但是,我在objects.deleteInBackground()
收到错误消息,删除此行后该功能仍然无法正常工作。
func deleteRequest()
let check = PFQuery(className: "UserRequests")
check.whereKey("requestResponded", equalTo: "True")
let query = PFQuery(className: "UserRequests")
query.whereKey("username", equalTo: (PFUser.currentUser()?.objectForKey("username") as! String))
query.findObjectsInBackgroundWithBlock( (objects, error) -> Void in
if objects != nil && error == nil
// Successfully retrieved the object
check.getFirstObjectInBackgroundWithBlock
(object: PFObject?, error: NSError?) -> Void in
if error != nil || object == nil
print("Not accepted.")
object!.deleteInBackground()
objects.deleteInBackground()
else
print("Successfully retrieved the object.")
else
self.performSegueWithIdentifier("requestAccepted", sender: self)
)
【问题讨论】:
【参考方案1】:这是因为对象是对象的列表。您应该只逐个删除对象 1。
例如:
for object in objects
object.deleteInBackground()
另外,因为两个查询属于同一个类。我建议使用 1 个查询
更新
func deleteRequest()
let query = PFQuery(className: "UserRequests")
// the key "requestResponded" is not True
query.whereKey("requestResponded", equalTo: "False")
// for deleting the object is that it belongs to the current user
query.whereKey("username", equalTo (PFUser.currentUser()?.objectForKey("username") as! String))
query.findObjectsInBackgroundWithBlock( (objects, error) -> Void in
if error != nil
print(error)
// objects are those the key "requestResponded" is not True and belongs to the current user
for object in objects
object.deleteInBackground()
// other case
if objects.count == 0 // no match result found
)
我猜你还是想念什么时候执行segue的条件
【讨论】:
谢谢。我怎样才能为此使用 1 个查询? 首先,您需要考虑条件,例如删除对象的条件是什么?执行segue的条件是什么? else case呢? 好的。问题中提到,删除对象的条件是它属于当前用户,并且键“requestResponded”不为True。 完美,有效!非常感谢!我刚刚意识到在这个特定功能中不需要转场。再次感谢您。以上是关于如何通过 PFQuery 从 Parse 中删除对象的主要内容,如果未能解决你的问题,请参考以下文章