我目前正試圖從Swift中的子快照訪問數據。這裏是我的代碼,我有(其中斯威夫特3 /火力地堡更新之前曾):Swift Firebase訪問子快照數據
if let achievements = snapshot1.childSnapshotForPath("Achievements").children.allObjects as? [FIRDataSnapshot] {
if achievements.count != 0 {
if let val = achievements[0].value!["somevalue"] as? Int {
self.dict["somevalue"] = val
}
}
因此,我想在這裏做的,是創建一個子快照(成就)的變量,並獲得子級快照數據。成就[0]將簡單地返回第一個值。但是,這似乎並不奏效。我應該如何處理這個問題?
我目前做這個快照裏面已經(的 'observeType:.ChildAdded')
我的火力地堡DB是這樣的:
Achievements{
randomId1 {
somevalue : somevalue
}
randomId2 {
somevalue2 : somevalue2
}
}
更新代碼:
func loadData() {
ref.child("Players").observe(FIRDataEventType.childAdded) { (snapshot:FIRDataSnapshot) in
if let value = snapshot.value as? [String:AnyObject], let username = value["Username"] as? String {
}
if let value = snapshot.value as? [String:AnyObject], let ranking = value["Rank"] as? String {
}
if let childSnapshot = snapshot.childSnapshot(forPath: "Achievements").children.allObjects as? [FIRDataSnapshot] {
if childSnapshot.count != 0 {
if let achievement1 = childSnapshot[0].value!["Rookie"] as? String {
print(achievement1)
}
}
}
}
}
JSON樹:
Players {
PlayerID {
Username
Rank
Achievements {
Rookie: yes
}
}
給你的全部功能。而你的實際JSON樹,很難從你給出的東西中破譯。 – Dravidian
我現在已經爲您提供了完整的代碼和JSON樹。我似乎無法找到一種方法來抓取childsnapshot數據,上面的代碼返回錯誤。我也試圖將其定義爲[String:AnyObject] - 但這隻會導致一個零。 – askaale
而且很清楚,我只是想從'新秀'價值中返回'是'。 – askaale