我需要一些帮助!我似乎无法从Parse中删除一行。我有"滑动删除"但是,当你尝试删除表中的某些内容时,它并没有做任何事情。我没有错。什么都没有删除。这是我的代码。
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 :(得分:0)
您无需在UITableViewCellEditingStyle
内查询,因为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]
}
如果你遇到困难,请告诉我。