Выполните итерацию по дочерним элементам в снимке и получите значения внутри каждого дочернего элемента в Firbase - PullRequest
0 голосов
/ 30 октября 2019

У меня есть данные ниже в моей базе данных Firebase в реальном времени: enter image description here

Я пытаюсь выполнить итерацию, чтобы получить все дочерние элементы идентификатора "00001", а затем получитьЗначение "timeDetected" для каждого из детей. Прямо сейчас у меня есть код swift:

for item in snapshot.children {

    print(item)

}

Это выводит каждый дочерний элемент на консоль, как показано ниже:

Snap (fouihbnfqwubfwqouyb) {
    timeDetected = "2018-05-28T16:00:13Z";
}
Snap (fouihbnfqwubtgowqouyb) {
    timeDetected = "2018-05-28T16:00:18Z";
}
Snap (fouohbnfqwubtgowqouyb) {
    timeDetected = "2018-05-28T16:00:43Z";
}

Как я могу печатать только значение "timeDetected""вместо всего снимка, чтобы моя консоль выглядела следующим образом:

timeDetected = "2018-05-28T16:00:13Z";
timeDetected = "2018-05-28T16:00:18Z";
timeDetected = "2018-05-28T16:00:43Z";

Любая помощь будет принята с благодарностью, так как я некоторое время застрял в этой простой проблеме и не смог добиться большого прогресса,

Ответы [ 2 ]

1 голос
/ 30 октября 2019

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

func readTimes() {
    let ref = self.ref.child("00001")
    ref.observeSingleEvent(of: .value, with: { snapshot in
        let allChildren = snapshot.children.allObjects as! [DataSnapshot]
        for snap in allChildren {
            if let time = snap.childSnapshot(forPath: "timeDetected").value as? String {
                print("timeDetected = \(time)")
            }
        }
    })
}

и вывод

timeDetected = 2018-05-28T16:00:13Z
timeDetected = 2018-05-28T16:00:18Z
timeDetected = 2018-05-28T16:00:43Z
0 голосов
/ 30 октября 2019
for item in snapshot.children {
    if let itemSnapshot = item as? Snapshot {
        for timeDetected in itemSnapshot.children {
            print(timeDetected)
        }
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...