Удалите прослушиватель моментальных снимков из Firestore (Swift) - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть следующий код для начала прослушивания изменений в определенном каталоге firestore:

func updateCart(){
   database.collection("Users").document(currentUserUUID!).collection("Transactions").addSnapshotListener { querySnapshot, error in
        guard let snapshot = querySnapshot else {
            print("Error fetching snapshots: \(error!)")
            return
        }
        snapshot.documentChanges.forEach { event in
            let Active = event.document.data()["Active"] as? Bool
            let Type = event.document.data()["Instore"] as? Bool
            let Store = event.document.data()["Store"] as? String
            let TDate = event.document.data()["Date"] as? String

            if (Active == true) {
                print("New Transaction at \(Store!) - (Instore location:\(Type!)) on \(TDate!)")
                self.searchCart(Document: event.document.documentID)
                self.DocumentID = event.document.documentID
                self.startTransaction()
            }

            if (event.type == .modified && Active == false){
                print("Transaction at \(Store!) - (Instore location:\(Type!)) on \(TDate!) is no longer active or has been finalized")
                let updatedData = ["Total": "\(self.Total)","Saved": "\(self.Savings)"]
                database.collection("Users").document(currentUserUUID!).collection("Transactions").document(event.document.documentID).setData(updatedData, merge: true)
                self.completeTransaction()
                self.DocumentID = " "

            }
        }
    }
}

В viewDidLoad я запускаю функцию: updateCart (), но когда поле Active в базе данных изменяется на false, я пытаюсь остановить прослушиватель в приложении. Я попробовал следующий код, но он не останавливает слушателя:

func detachListener() {
    let listener = database.collection("Users").document(currentUserUUID!).collection("Transactions").addSnapshotListener { querySnapshot, error in
        if error != nil{
            print(error as Any)
        }
    }
    listener.remove()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...