Как получить данные с карты (объекта) документа Cloud Firestore на Swift 4.2? - PullRequest
0 голосов
/ 21 октября 2018

Я использую Cloud Firestore в качестве базы данных для моего приложения для iOS.

У меня проблема, когда я хочу запросить свои данные, когда документ содержит Карты (Тип объекта).Я не могу получить доступ к полям (скажем, firstName здесь) карты (nameOnId) с помощью простого запроса.

Мой код такой:

let db = Firestore.firestore()
    db.collection("userDetails").getDocuments() { (querySnapshot, err) in

        if let err = err {
            print("Error getting documents: \(err)")
        } else {
            for document in querySnapshot!.documents {
                let results = document.data()
                let result2 = results.compactMap({$0})
                print("listedItems: \(document.documentID) => \(result2[0].value)") }}}

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

{
firstName = "John";
middleName = "British";
middleName = "Citizen";
gender = "M";
DOB = "8 December 2000 at 00:00:00 UTC+11";
}

вопрос в том, как получить доступ к одному значению, например «Джон», с помощью запроса? Моя структура данных в Cloud Firestore

1 Ответ

0 голосов
/ 21 октября 2018

Один из способов сделать это заключается в следующем.Также рекомендуется не распаковывать ваш querySnapshot (если запрос не существует, ваше приложение будет аварийно завершено!).Надеюсь, это поможет!

let db = Firestore.firestore()
db.collection("userDetails").getDocuments() { (querySnapshot, err) in
    if let err = err {
        print("Error getting documents: \(err)")
    } else if let querySnapshot = querySnapshot {
        for document in querySnapshot.documents {
            let results = document.data()
            if let idData = results["nameOnID"] as? [String: Any] {
                let firstName = idData["firstName"] as? String ?? ""
                print(firstName)
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...