Swift Firebase访问子快照数据
问题描述:
我目前正试图从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
}
}
答
请尝试: -
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)
}
}
}
给你的全部功能。而你的实际JSON树,很难从你给出的东西中破译。 – Dravidian
我现在已经为您提供了完整的代码和JSON树。我似乎无法找到一种方法来抓取childsnapshot数据,上面的代码返回错误。我也试图将其定义为[String:AnyObject] - 但这只会导致一个零。 – askaale
而且很清楚,我只是想从'新秀'价值中返回'是'。 – askaale