我的应用程序中具有消息传递功能,因此我有一个包含所有消息的文档集合和另一个集合,用于保存来自不同用户的最新消息。
在View Controller中,我具有一个显示所有最近消息的表格视图,当我使用函数删除单元格时,所有数据都会按照我希望在Firestore中的方式删除。
我还将其从数组中删除并删除该行。
我的问题是,即使从Firestore中删除了数据,也无法同时删除该单元格。
当我第二次在模拟器中运行我的应用程序时,单元格已被删除
有人知道为什么不能立即移除电池
func deleteMessages(currentUid: String, userUid: String) {
db.collection("messages").document(currentUid).collection(userUid).getDocuments { (snapshot, Error) in
if let er = Error {
print(er)
} else {
guard let snapshot = snapshot?.documents else {return}
for snap in snapshot {
let message = Message(dictionary: snap.data())
let docId = message.docId
db.collection("messages").document(currentUid).collection("recentMessages").document(userUid).delete()
db.collection("messages").document(currentUid).collection(userUid).document(docId).delete()
}
}
}
}
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
guard let currentUid = Auth.auth().currentUser?.uid else {return}
let userUid = chats[indexPath.row].user.userUid
if editingStyle == .delete {
tableView.beginUpdates()
self.chats.remove(at: indexPath.row)
deleteMessages(currentUid: currentUid , userUid: userUid)
tableView.deleteRows(at: [indexPath], with: .fade)
tableView.endUpdates()
}
}
func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCell.EditingStyle {
return .delete
}
答案 0 :(得分:0)
删除后,您需要在mainQueue中调用tableView.reloadData()