1
如何将数据从更深的儿童获取到名称未知的数据库中?将Firebase多级别数据库导入到表格视图
我的示例结构如下。
此代码(获取快照数据),但我硬编码的第二个孩子。我不会总是知道这个值(Bus 1)。
let ref = FIRDatabase.database().reference()
let usersRef = ref.child("Trips").child("Bus 1")
usersRef.observeSingleEvent(of: .value, with: { (snapshot) in
for snap in snapshot.children {
let userSnap = snap as! FIRDataSnapshot
let uid = userSnap.key //the uid of each user
let userDict = userSnap.value as! [String:AnyObject] //child data
let personOn = userDict["getOn"] as! String
print("key = \(uid) is at getOn = \(personOn)")
}
})
这将打印:
key = Stop 1 is at getOn = 3
key = Stop 2 is at getOn = 7
我应该不同构造呢?奉承?
谢谢,让我知道任何问题。
这是一个更可取的方式,因为我有一个TripDetails类,它进入一个数组加载到表中。但是,我不知道第二个孩子的名字是什么。
FIRDatabase.database().reference().child("Trips").child("Bus 1").observe(.childAdded, with: { (snapshot) in
if let dictionary = snapshot.value as? [String: AnyObject] {
let trip = TripDetails()
trip.setValuesForKeys(dictionary)
self.trips.append(trip)
DispatchQueue.main.async {
self.tableView.reloadData()
}
}
print(snapshot)
}, withCancel: nil)
你想要所有的巴士站? –
那么,我打算用总线填充tableView。然后使用Stop 1:GetOn/GetOff,Stop 2:GetOn/GetOff和其他信息在detailsViewController中显示详细信息。在使用使用总线1值的didSelectRowAt之后,我可能会获得这些数据。 –
您可以只观察FIRDatabase.database()。reference()。child(“Trips”)并保存所有总线并停止信息。基本上与第一个查询相同,只需一个额外的循环。 –