Как я могу использовать метод addSnapshotListener с getDocument при записи в Firestore в Swift? - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь получить данные из Firebase Firestore.Я успешно извлекаю данные, однако отображаю их в UITableView, и мне нужно, чтобы они извлекались в режиме реального времени.Я использую метод getDocuments и не могу добавить прослушиватель моментальных снимков, поскольку не могу записать аргументы getDocuments.

func loadPartiesDataFromFirebase() {
    let db = Firestore.firestore()
    db.collection("parties").getDocuments() { snapshot, err in
        if let err = err {
            print("Error getting documents: \(err)")
        } else {
            for document in (snapshot!.documents) {
                let title = document.data()["title"] as? String ?? "New Party"
                let location = document.data()["location"] as? String ?? "No Location"
                let date = document.data()["date"] as? String ?? "No Date"
                let startTime = document.data()["startTime"] as? String ?? "No Start Time"
                let endTime = document.data()["endTime"] as? String ?? "No End Time"

                self.parties.append(Party(title: title, location: location, date: date, startTime: startTime, endTime: endTime))
            }
        }

        self.yourPartiesTableView.reloadData()
}

Я хотел, чтобы он непрерывно отображал данные из Firestore в режиме реального времени.Как я могу сделать это в Swift?

1 Ответ

0 голосов
/ 17 мая 2019

Вам необходимо добавить слушателя в коллекцию.

    let db = Firestore.firestore()
    let listener = db.collection("parties").addSnapshotListener { (snapshot, error) in
        switch (snapshot, error) {
        case (.none, .none):
            print("no data")
        case (.none, .some(let error)):
            print("some error \(error.localizedDescription)")
        case (.some(let snapshot), _):
            print("collection updated, now it contains \(snapshot.documents.count) documents")
        }
    }

Кроме того, вы можете сохранить ссылку на слушателя и удалить ее, когда она вам не нужна.

    listener.remove()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...