2017-02-03 10 views
0

Мне нужна помощь! Кажется, я не могу удалить только одну строку из Parse. У меня есть «Swipe to delete», однако, когда вы пытаетесь удалить что-то из таблицы, это ничего не делает. У меня нет ошибок. Ничто не удаляется. Это мой код.Удалите одну строку в разделе «Анализ» с помощью Swift 3

 override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { 
    if editingStyle == .delete { 
     // delete from server 
     let myFeatherquery = PFQuery(className: "FeatherPosts") 

     myFeatherquery.whereKey("message", equalTo: (PFUser.current()?.objectId!)!) 
     myFeatherquery.findObjectsInBackground(block: { (objects, error) in 
      if error != nil { 
       print("THERE WAS AN ERROR") 
      }else{ 
       for object in objects!{ 
        self.messages.remove(at: indexPath.row) 
        object.deleteInBackground() 
        self.tableView.reloadData() 
       } 
      } 
     }) 
    } 
} 

Короче говоря, я хочу, чтобы удалить сообщение из tableView и удалить его на стороне синтаксического анализа, а также. Если я изменю:

"myFeatherquery.whereKey("message", equalTo: (PFUser.current()?.objectId!)!)"

в

"myFeatherquery.whereKey("userid", equalTo: (PFUser.current()?.objectId!)!)" 

он просто удалил все, что пользователь никогда не отвечал. Пожалуйста помоги!

ответ

0

Вам не нужно запрашивать внутри UITableViewCellEditingStyle becasue IndexPath уже установлен, который вы хотите удалить.

Теперь я добавил несколько дополнительных бит к этой логике.

1 :) Вы можете сдвинуть ячейку, чтобы просмотреть кнопку удаления. После нажатия будет подтверждено, хотите ли вы удалить.
2 :) После удаления будет происходить замирание. Затем он обновит tableView и удалит объект в синтаксисе в фоновом режиме.

FeatherPostsArray, который вы видите, я создал ваш массив объектов, которые вы использовали в tableView. В вашем numberOfRowsInSection вы бы посчитали это.

Так это то, что должно быть:

override func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? { 

     var recClass = PFObject(className:"FeatherPosts") 
     recClass = self.FeatherPostsArray[(indexPath as NSIndexPath).row] 



     let deleteAction = UITableViewRowAction(style: .destructive, title: "Delete") { (action, indexPath) in 
      let alert = UIAlertController(title: "App Name", 
              message: "You sure you want to delete?", 
              preferredStyle: .alert) 

      let delete = UIAlertAction(title: "Delete", style: .default, handler: { (action) -> Void in 

       recClass.deleteInBackground {(success, error) -> Void in 
        if error != nil { 

        }} 

       self.FeatherPostsArray.remove(at: (indexPath as NSIndexPath).row) 
       tableView.deleteRows(at: [indexPath], with: .fade) 
       tableView.reloadData() 
      }) 
      let cancel = UIAlertAction(title: "Cancel", style: .destructive, handler: { (action) -> Void in }) 
      alert.addAction(delete) 
      alert.addAction(cancel) 
      self.present(alert, animated: true, completion: nil) 

     } 

     //This is nice if you want to add a edit button later 
     return [ deleteAction] 

    } 

Позвольте мне знать, если вы застряли.

+0

Это сработало. Мне пришлось немного подкорректировать его, но он отлично работал! Благодаря! –

+0

Вы приветствуете друга! – Cliffordwh