Swift Firebase Access子快照数据



我目前正试图从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 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
}

}

尝试:-

 if let childSnapshot = snapshot.childSnapshot(forPath: "Achievements") as? FIRDataSnapshot{
                if let achievementDictionary = childSnapshot.value as? [String:AnyObject] , achievementDictionary.count > 0{
                    if let achieveMedal = achievementDictionary["Rookie"] as? String {
                        print(achieveMedal)
             }        
       }
    }

最新更新