Cloud Music
Cloud Music

Reputation: 81

how to delete UITableView Cell after document gets removed from Firestore console

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

Answers (1)

Shehata Gamal
Shehata Gamal

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

Related Questions