Мне нужна помощь, чтобы получить значения из снимка с FireBase - PullRequest
0 голосов
/ 01 мая 2018

Мои данные в Firebase выглядят так:

schema

Я получаю данные с

 var ref: DatabaseReference
    ref = Database.database().reference()

    ref.child("peopleReminders").child("-LBO0TMbOM0cwd5TMMiP").observe(.value) { snapshot in
         for  value in snapshot.children {
            print(value)

        }

    }

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

Snap (0) r04
Snap (1) r02
Snap (2) r01

Это должен быть массив. Что мне нужно сделать, это получить значения R04, R02 и R01 из него.

Ответы [ 2 ]

0 голосов
/ 01 мая 2018

Вам не нужны loop или enumeration для разбора его в массив, поскольку Firebase поддерживает как Array, так и Dictionary. Вы можете напрямую привести результат в массив. Ниже будет работать кусок кода:

ref.child("peopleReminders").child("-LBO0TMbOM0cwd5TMMiP").observeSingleEvent(of: DataEventType.value) { (snapshot) in
     if snapshot.exists() {
         let result: [String] = snapshot.value as? [String] ?? []
         print(result)
     }
}

Примечание: Всегда проверять наличие snapshot, будет ложным, если для запрошенной ссылки не существует данных. Используйте observeSingleEvent, когда вам нужно извлечь данные за один раз, если вы используете observe, обратный вызов будет вызываться много раз, когда есть изменение в запрашиваемом узле, так что delete , insert , обновление и т. Д.

0 голосов
/ 01 мая 2018

Я заменил значение в snapshot.children следующим кодом.

let enumerator = snapshot.children
while let rest = enumerator.nextObject() as? DataSnapshot {
    print(rest.value!)
}

Новый вывод теперь: R04 R02 R01

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