【发布时间】:2021-09-11 17:33:27
【问题描述】:
如何从 firebase 的数组中删除元素?我有两个数组 - 第一个带有名称,第二个带有菜单类型。 使用我的代码,我只从第一个数组中删除。
func reloadTableView() {
guestList.removeAll()
if let tableId = tableData?.id {
Database.database().reference().child("userInfo").child(uid!).child("tables").child(tableId).child("guestsOnTable").queryOrderedByKey().observe(.value) { (snapshot) in
if snapshot.childrenCount>0 {
self.guestList.removeAll()
for guest in snapshot.children.allObjects as![DataSnapshot]{
if let guestObject = guest.value as? String{
self.guestList.append(guestObject)
}
}
DispatchQueue.main.async {
self.guestsOnTableTableView.reloadData()
}
}
}
}
}
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete {
let guestName = guestList[indexPath.row]
if let tableId = tableData?.id{
refGuests = Database.database().reference().child("userInfo").child(uid!).child("tables").child(tableId).child("guestsOnTable")
refGuests.observe(.value) { (snapshot, error) in
if let error = error {
print(error.description)
}
if let guests = snapshot.children.allObjects as? [DataSnapshot] {
for (index,guest) in guests.enumerated() {
if let guestObject = guest.value as? String {
if guestObject == guestName {
self.guestList.remove(at: index)
self.refGuests.setValue(self.guestList)
DispatchQueue.main.async {
self.guestsOnTableTableView.reloadData()
}
}
}
}
}
}
}
}
}
这是从火力基地拍摄的。
【问题讨论】: