【发布时间】:2017-01-30 02:46:20
【问题描述】:
我目前正在尝试从 Swift 中的子快照访问数据。这是我的代码(在 Swift 3/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')
我的 Firebase 数据库如下所示:
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 树,很难从您提供的内容中破译。
-
我现在已经为您提供了完整的代码和 JSON 树。实在是找不到办法获取childsnapshot数据,上面的代码返回错误。我也尝试将其定义为 [String:AnyObject] - 但这只会导致 nil。
-
明确地说,我只是想从“Rookie”值返回“yes”。
标签: ios swift firebase firebase-realtime-database