ios - Swift Firebase 访问子快照数据

标签 ios swift firebase firebase-realtime-database

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


                    }

所以我在这里尝试做的是创建子快照(成就)的变量,并从中访问子快照数据。 achievements[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

}


}

最佳答案

尝试:-

 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)

             }        
       }
    }

关于ios - Swift Firebase 访问子快照数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39623524/

相关文章:

ios - UITabBarController tabBar setItemWidth 不起作用

ios - 在没有 CABTMIDILocalPeripheralViewController 的情况下手动在 iOS 上宣传蓝牙 MIDI

ios - 通过快速单击 TableView 单元格转到 ViewController

ios - 我可以从解析中检索信息,也可以打印该数组,但是当我尝试将这些数组元素放入 tableviewcell 时,什么也没有显示

python - 使用 python-firestore AsyncClient 和 firebase

ios - View 尺寸不会随 iPhone 尺寸而改变

ios - 更新到 Xcode7 后,我的应用程序无法连接到特定地址

ios - 导入唯一对象时 CoreStore 映射关系

javascript - Firestore Set Catch 最后

swift - Firebase 4.0 错误 - 'The default Firebase app has not yet been configured' 尽管 FirebaseApp.configure() 似乎是正确的