Reputation: 81
since of starting my project now i didn't find any answer about how to delete the UITableView cell from an outside source, I'm struggling here about how to delete UITableview Rows or Cells after it gets deleted from My FireStore Cloud Storage, I want to remove the value from the array and delete that cell without using canEditRowAt indexPath
cause I want to delete it in
one more thing I don't know how to use dictionaries with arrays, and I don't know if I have to use it in such a case
struct accepteddriverData {
var driverName: String
var userPhone: String
var username: String
var driverPhone: String
}
func driverSelected(arg: Bool, completion: (Bool) -> ()){
guard let driverid = Auth.auth().currentUser?.uid else {return}
let firestore = Firestore.firestore()
let doc = firestore.collection("offers").whereField("driverUid", isEqualTo: driverid).whereField("selected", isEqualTo: true)
doc.addSnapshotListener { (querysnap, err) in
if err != nil {
print(err?.localizedDescription ?? "")
}
querysnap?.documentChanges.forEach({ (change) in
self.DriverData = []
if (change.type == .added) {
let snap = change.document.data()
let driverName = snap["driverName"] as? String ?? ""
let userPhone = snap["userPhone"] as? String ?? ""
let username = snap["userName"] as? String ?? ""
let driverPhone = snap["driverPhone"] as? String ?? ""
let accepted = accepteddriverData(driverName: driverName, userPhone: userPhone, username: username, driverPhone: driverPhone)
self.DriverData.append(accepted)
DispatchQueue.main.async {
self.DriverOrdersTV.reloadData()
}
}
if (change.type == .removed){ // i want to delete tableView cell on this statement
let id = change.document.documentID
let snap = change.document.data()
print(id)
print(snap)
}
})
}
completion(arg)
}
Upvotes: 0
Views: 42
Reputation: 100541
Add to your model
var docId: String
then inside
if (change.type == .removed){
let id = change.document.documentID
self.DriverData.removeAll(where:{ $0.docId == id })
// refresh table
}
Upvotes: 1