Перезапись значений в переменной - PullRequest
0 голосов
/ 31 октября 2019

Я новичок в Swift, с тряской проблемой. Мне нужно получить список всех документов в коллекции пожарных. Для этого я использую эту функцию:

@Published var chatList: String!

    func getDataFromDatabaseListenChat() {
        let db = Firestore.firestore()
        db.collection("chatRoom").getDocuments() { (querySnapshot, err) in
            if let err = err {
                print("Error getting documents: \(err)")
            } else {
                for document in querySnapshot!.documents {
                    self.chatList = document.documentID
                    print("\(document.documentID) => \(document.data())")
                }
            }
        }
    }

Если в коллекции более одного документа, то получается, что следующий документ перезаписывает предыдущий в переменной, и на выходе я получаю одинэлемент в списке. Подскажите, как добавить все эти документы в массив, чтобы их можно было использовать в списке swiftui

Ответы [ 2 ]

2 голосов
/ 31 октября 2019

Вам нужно

var chatList =  [String]()

Тогда

self.chatList = querySnapshot!.documents.map{$0.documentID}
1 голос
/ 31 октября 2019

Вам следует избегать принудительного разворачивания, где это возможно. Предыдущий ответ предлагает использовать массив, который является правильным. Но для безопасности вы должны сделать следующее:

var chatList = [String]()

func getDataFromDatabaseListenChat() {
    let db = Firestore.firestore()
    db.collection("chatRoom").getDocuments() { (querySnapshot, err) in
        if let err = err {
            print("Error getting documents: \(err)")
        } else if let querySnapshot = querySnapshot {
            self.chatList = querySnapshot.documents.map { $0.documentID }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...