Присвоение значений из Firestore переменным в swift - PullRequest
0 голосов
/ 08 марта 2019

Я потянул свои волосы в течение нескольких часов во время перехода от базы данных в реальном времени к Firestore, я пытаюсь найти способ назначить поля из нескольких документов (каждый документ содержит фотографию и подпись) дляпокажите в приложении, мой код на данный момент выглядит так, как будто 3-летний ребенок просто разозлился на клавиатуре, но любая помощь в том, как это сделать, будет принята с благодарностью.

Я прошел черездокументацию сотни раз и прочитайте в основном все подобные вопросы здесь, на StackOverflow, но ничего не работает.

PS Я не спал более 36 часов из-за этого.

        db.collection("posts").addSnapshotListener { (querySnapshot, error) in
        // get the data of all the documents into an array
        var data = querySnapshot.docs.map(function (documentSnapshot) {
            return documentSnapshot.data();
        });
    }

1 Ответ

1 голос
/ 08 марта 2019

Вот очень упрощенная версия того, что вы пытаетесь сделать.Когда у вас есть данные, вы можете развернуть их по отдельности, как в примере ниже, или сопоставить их с пользовательскими объектами Swift.Но похоже, что ваш вопрос только о получении данных из Firestore, и вот как вы это сделаете:

featuredAttractionsQuery.addSnapshotListener { (snapshot, error) in

    guard let snapshot = snapshot,
        error == nil else { // error

            if let error = error {
                print(error.localizedDescription)
            }
            return // terminate query

    }

    guard !snapshot.isEmpty else { // no data
        return // terminate query
    }

    // data fetched
    for doc in snapshot.documents {

        guard let caption = doc.get("caption") as? String,
            let imagePath = doc.get("imagePath") as? String else {
                continue // continue loop
        }

        // do something with the data
        // perhaps take the image path and download the image (use a dispatch group if you do)

    }

    // whatever you do, when you're done, load your data source

}

Существует еще много чего, например, использование очередей отправки (для анализа вашегоданные в фоновом режиме) и группы рассылки (для обработки загрузок изображений, которые возвращаются асинхронно).

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