Не уверен, как получить доступ к каждому значению из базы данных Firebase - PullRequest
0 голосов
/ 25 декабря 2018

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

  ref.child("messages").observeSingleEvent(of: .value, with: { (snapshot) in
        if let data = snapshot.value as? [String: Any] {
            let values = Array(data.values)

             for objects in values{
                 print(objects)
            }
        }

    }) { (error) in
        print(error.localizedDescription)
    }

Я стремлюсь достичь результата:

    39
    -121
    "rhwkfncdnfk"
    1000

    39.583869396
    -125.38589543
    "This is the first message"
    100

Однако в консоли я получаю следующие значения:

    {
        CoordinatesLat = 39;
        CoordinatesLong = "-121";
        Message = rhwkfncdnfk;
        Range = 1000;
   }
   {
        CoordinatesLat = "39.583869396";
        CoordinatesLong = "-125.38589543";
        Message = "This is the first message";
        Range = 100;
   }

КогдаЯ печатаю snapshot.value, который я получаю:

 Optional({
    "2B3BF5F1-E9DF-4292-9278-15B8C5849C15" =     {
        CoordinatesLat = "39.583869396";
        CoordinatesLong = "-125.38589543";
        Message = "This is the first message";
        Range = 100;
    };
     "7C000DB1-EA91-4129-B944-A0A09E6D24C7" =     {
        CoordinatesLat = 39;
        CoordinatesLong = "-121";
        Message = rhwkfncdnfk;
        Range = 1000;
    };
})

Я не уверен, как разобрать то, что распечатывается, и получить фактические значения.

1 Ответ

0 голосов
/ 26 декабря 2018

Если вы звоните .value Firebase возвращает значение базового узла / свойства в типе, который вы сохранили.Таким образом, ваш Message будет возвращен в виде строки, Range - в виде числа, а широта и долгота - в виде строк (потому что именно так вы их сохранили).

ref.child("messages").observeSingleEvent(of: .value, with: { (snapshot) in
    print(snapshot.childrenCount); // prints the number of messages

    for message in snapshot.children.allObjects as! [FIRDataSnapshot] {
        print(message.key); // "2B3BF5F1-E9DF-4292-9278-15B8C5849C1"

        print(message.childSnapshot(forPath: "Message").value); "This is the first message"
        print(message.childSnapshot(forPath: "Range").value); 100

    }

}) { (error) in
    print(error.localizedDescription)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...