Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何通过PFQuery从Parse中删除对象_Ios_Swift_Parse Platform - Fatal编程技术网

Ios 如何通过PFQuery从Parse中删除对象

Ios 如何通过PFQuery从Parse中删除对象,ios,swift,parse-platform,Ios,Swift,Parse Platform,仅当对象属于当前用户且RequestResponsed不等于true时,我才尝试通过swift从类UserRequests中删除对象。但是,我在objects.deleteInBackground()中得到一个错误,当我删除这一行时,该函数仍然不起作用 func deleteRequest(){ let check = PFQuery(className: "UserRequests") check.whereKey("requestResponded", equalTo: "T

仅当对象属于当前用户且RequestResponsed不等于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的条件是什么?还有别的情况吗?好的。如问题中所述,删除对象的条件是它属于当前用户,并且键“RequestResponsed”不正确。完美,它可以工作!非常感谢你!我刚刚意识到在这个特殊的函数中不需要segue。再次感谢你。