2016-10-15 9 views
1

オブジェクトが現在のユーザーに属し、そのrequestRespondedがtrueに等しくない場合のみ、クラスUserRequestsからオブジェクトを削除しようとしています。しかし、objects.deleteInBackground()にエラーがあり、この行を削除しても機能が動作しません。PFQueryを介してParseからオブジェクトを削除する方法

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

によって対象物1を削除する必要があります。また

for object in objects { 
    object.deleteInBackground() 
} 

、2つのクエリは同じクラスに属しているため。私はあなたがまだ

+0

はありがとうセグエを実行するときの条件を見逃すことは推測する1クエリ

UPDATE

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

を使用してお勧めします。これに対して1つのクエリを使用するにはどうすればよいですか? –

+0

まず、オブジェクトを削除する条件とは何かなどの条件について考える必要があります。 segueを実行するための条件は何ですか?どういう場合? –

+0

よろしくお願いします。この質問で述べたように、オブジェクトを削除する条件は、現在のユーザーに属し、キー "requestResponded"がTrueではないということです。 –

関連する問題