Как получить поле массива из Firestore и записать в поле структуры в Swift? - PullRequest
0 голосов
/ 26 марта 2019

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

Мои данные в пожарном магазине выглядят примерно так:

 let data : [String : Any] = [
                "name" : "House A",
                "price" : 2000,
                "contents" : [
                   "water" : true,
                   "internet" : false
                ]
            ]

Вот функция getDocument:

let docRef = db.collection("example").document("example")

docRef.getDocument { (document, error) in
            if let document = document, document.exists {

                let data = Houses(Doc: document)
                ...
                ...
                ...
            } else {
                print(error, "Item not found")
            }
        }        

Вот мои структуры:

struct Houses {
    var name: String?
    var price: Int
    var contents : Contents

    init(Doc: DocumentSnapshot){

        self.name = Doc.get("name") as? String ?? ""
        self.price = Doc.get("price") as! Int
        self.contents = Doc.get("contents") as! Contents
    }
}

struct Contents  {
    var water: Bool
    var internet : Bool

    init?(data: [String: Any]) {

        guard let water = data["water"] as? Bool,
            let internet = data["internet"] as? Bool else {
                return nil
        }

        self.water = water
        self.internet = internet

    }
}

Другая версия Содержание:

struct Contents  {
    var water: Bool
    var internet : Bool

    init(Doc: DocumentSnapshot){
        self.water = Doc.get("water") as! Bool
        self.internet = Doc.get("internet") as! Bool
    }
}

ОБНОВЛЕНО Проблема решена с изменением этой строки:

self.contents = Doc.get("contents") as! Contents

до *; 1018 *

self.contents = Contents(data: Doc.get("contents") as! [String : Any])

имя и цена возвращает то, что я ожидал, но содержимое всегда возвращает ноль . Я пытался настроить Содержание , но результаты те же. Я думаю, я должен настроить структуру с именем Содержание .

Буду признателен за любую помощь.

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