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」)並保存所有總線並停止信息。基本上與第一個查詢相同,只需一個額外的循環。 –