Я бы посоветовал не хранить данные в разных массивах, может быть лучше хранить данные из каждого узла в классе, а затем хранить массив этих классов.
Давайте начнем с класса, которыйхранит все данные
class ChronoClass {
var node_id = ""
var sleep = ""
var time_uploaded = ""
init(withSnapshot: DataSnapshot) {
let nodeId = withSnapshot.key
let someSleep = withSnapshot.childSnapshot(forPath: "sleep").value as? String ?? ""
let someTime = withSnapshot.childSnapshot(forPath: "time_uploaded").value as? String ?? ""
self.node_id = nodeId
self.sleep = someSleep
self.time_uploaded = someTime
}
}
, а затем массив классов для хранения всех классов
var sleepArray = [ChronoClass]()
и, наконец, код для чтения в каждом узле, заполняет класс и сохраняетклассы в массиве.
func readFirebaseDataAndPopulateArray() {
let sleepNode = self.ref.child("sleep_node")
sleepNode.observeSingleEvent(of: .value, with : { snapshot in
for child in snapshot.children {
let snap = child as! DataSnapshot
let aChrono = ChronoClass(withSnapshot: snap)
self.sleepArray.append(aChrono)
}
for x in self.sleepArray { //just prints out what's in the array
print(x.node_id, x.sleep, x.time_uploaded)
}
})
}
и выходные данные, основанные на вашей структуре
01-08-2019 6.25 hrs 07:10 AM
01-09-2019 6.72 hrs 07:19 AM
01-10-2019 6.55 hrs 07:10 AM
Преимущество использования класса состоит в том, что вы можете сортировать, искать, экстраполировать или делать множество другихфункции на объектах вместо работы с тремя отдельными массивами.