2015-07-19 4 views
1

У меня возникла проблема при попытке удалить объекты из Parse после их запроса.Проблема с удалением объекта из parse

Мой код:

 var query = PFQuery(className:"sendMessage") 
     query.whereKey("messageSent", equalTo: PFUser.currentUser()!.username!) 
     query.whereKey("messageReceived", equalTo: self.nameLabel!.text!) 
     query.findObjectsInBackgroundWithBlock({ (objects, NSError) -> Void in 

      if objects != nil { 

       if let objects = objects as? [PFObject] { 
        for object in objects { 


         print(object["message"]) 

        /// here I would go: object.deleteInBackground() 
             object.save() 

         } 
       } 
       } 
     }) 

Но мне кажется, что я не могу найти правильный способ сделать это. Какие-нибудь идеи?

+0

А что это проблема точно? – Wain

+0

Это не работает. У меня ошибка: «PFObject не имеет члена с именем deleteInBackground» – viktor

ответ

0

Я использовал deleteEventually() с успехом раньше, вместе с PFObject(withoutDataWithClassName: YourClassName, objectId: YourObjectID).

Если это работает, я не знаю, почему, но хорошо :)

(как указано Гектор в этом вопросе (Разбор Objective-C): https://www.parse.com/questions/delete-row)

for object in objects { 
    print(object["message"] 
    var toDelete = PFObject(withoutDataWithClassName: "sendMessage", objectId: object.objectID) 
    toDelete.deleteEventually() 
} 
+0

Спасибо за ответ. Тем не менее, я действительно видел, что мне лучше пропустить идентификацию идентификатора объектов перед удалением. – viktor

+0

Я уверен, что вы можете получить доступ к объекту без выполнения другого запроса. Поскольку вы извлекаете объекты в виде массива PFObjects, objectId должен быть доступен, как я сделал выше (добавленный пример). – Mattias

+1

Пойдем с этим. Благодарю. Обновит вас после этого. – viktor

1
var query = PFQuery(className:"sendMessage") 
let username = PFUser.currentUser()?.username 
    query.whereKey("messageSent", equalTo: username) 
    query.whereKey("messageReceived", equalTo: self.nameLabel!.text!) 
    query.findObjectsInBackgroundWithBlock({ (objects:[AnyObject]?, error:NSError) -> Void in 
     if error == nil { 
      if let objects = objects as? [PFObject] { 
       for object in objects { 
       let deletemessage = object["message"] as! String 
        print(deletemessage) 
        object.delete() 
        } 
      } 
      } 
      else { 
        println("Error") 
       } 
    }) 
+0

Ваше решение работает тоже. Большое спасибо! – viktor

+0

рад, что помогу. и дайте мне голос lol :) – Lamar

+0

полностью, попробовал проверить зеленый знак тоже, но он снимает первый ответ, который был дан. Просветите меня, как это сделать, пожалуйста. – viktor

Смежные вопросы