Firebase Realtime DB - получение определенных данных из массива? - PullRequest
0 голосов
/ 03 июля 2019

У меня есть база данных FB в реальном времени, и я запрашиваю ее часть.

let databaseRef = Database.database().reference(withPath: "developer")
    databaseRef.observe(.value) { (snapshot) in
    snapshot.children.forEach({ (child) in
        print(child)
    })
 }

Это печатает следующее:

Snap (0) {
    email = "foo@bar.com";
    id = 1;
    image = "dolecki.png";
    name = "Mr. Dolecki";
}
Snap (1) {
    email = "foo@bar.com";
    id = 2;
    image = "bourque.png";
    name = "Mr. Bourque";
}
Snap (2) {
    email = "foo@bar.com";
    id = 3;
    image = "shaw.png";
    name = "Mr. Shaw";
}

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

1 Ответ

0 голосов
/ 03 июля 2019

Я думаю, что у меня есть это сейчас.

let databaseRef = Database.database().reference(withPath: "developer")
    databaseRef.observe(.value) { (snapshot) in
        print(snapshot.childrenCount) //3
        if let snapshot = snapshot.children.allObjects as? [DataSnapshot] {
            for snap in snapshot {

                if let postDict = snap.value as? Dictionary<String, AnyObject> {
                    if let name = postDict["name"] {
                        print(name)
                    }
                    //print(postDict.keys) // name, email, id, image
                } else {
                    print("Failed to convert.")
                }
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...