从 firebase 执行tableview
后,我无法重新加载removeValue()
。该表仅在我退出并返回页面时更新,这不是我的意图。我想在删除帖子时实时更新表格。寻求建议我如何实现这一目标。
我尝试将以下内容添加到我的代码中,但它无法正常工作。
postsDB.observe(.childRemoved) { (snapshot) in
self.myPostsTable.reloadData()
}
我的firebase结构如下所示:
我使用 SwipeCellKit Pod ,我删除帖子的代码是这样的:
func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath, for orientation: SwipeActionsOrientation) ->
[SwipeAction]? {
guard orientation == .right else { return nil }
let delete = SwipeAction(style: .destructive, title: nil) { action, indexPath in
let postsDB = Database.database().reference().child("posts")
let selectedPost = self.postArray[indexPath.row]
let postid = selectedPost.postid
postsDB.child(postid).removeValue()
}
configure(action: delete, with: .trash)
return [delete]
}
答案 0 :(得分:2)
通常在使用数据库且没有像NSFetchedResultsController
这样的控制器时,您必须分三步删除项目
所以你必须添加步骤2和3
let delete = SwipeAction(style: .destructive, title: nil) { action, indexPath in
let postsDB = Database.database().reference().child("posts")
let selectedPost = self.postArray[indexPath.row]
let postid = selectedPost.postid
postsDB.child(postid).removeValue()
self.postArray.remove(at: indexPath.row) // step 2
self.tableView.deleteRows(at: [indexPath], with: .fade) // step 3
}