任何人都可以帮助从 FirebaseDatabase 获得 2 级深度字典吗?
Posted
技术标签:
【中文标题】任何人都可以帮助从 FirebaseDatabase 获得 2 级深度字典吗?【英文标题】:Can anyone helpe getting 2 level depth dictionary from FirebaseDatabase? 【发布时间】:2019-10-25 10:09:29 【问题描述】:我有这个 FirebaseDatabase 结构:
我需要从 Firebase 检索数据。 通常我使用这样的函数:
funfunc getWodsFromDataBase ()
print ("Get Wods From Data Base (AppDelegate)")
let wodDb = Database.database().reference().child("wods")
wodDb.observe(.childAdded) (snapshot) in let snapValue = snapshot.value as! Dictionary<String, Any>
let girl_hero = snapValue["girl_hero"]!
let nombre = snapValue["nombre"]!
let wod = Wod(
girl_hero : girl_hero as! String,
nombre : nombre as! String,
)
self.wodsArray.append(wod)
检索第一级值很容易,但我不知道如何获取第二级(练习)的每个值以及如何更新我现在这样的 wods 结构:
struct Wod
var girl_hero : String
var nombre : String
init ()
self.girl_hero = ""
self.nombre = ""
init (
girl_hero : String,
nombre : String)
self.girl_hero = girl_hero
self.nombre = nombre
谁能帮我重写我的结构并从 Firebase 获取数据?
【问题讨论】:
【参考方案1】:听起来您想在快照中循环遍历 exercises
节点的子节点。你可以这样做:
let wodDb = Database.database().reference().child("wods")
wodDb.observe(.childAdded) (snapshot) in
let snapValue = snapshot.value as! Dictionary<String, Any>
let girl_hero = snapValue["girl_hero"]!
let nombre = snapValue["nombre"]!
let exercises_snapshot = snapshot.childSnapshot(forPath: "exercises")
for child in exercises_snapshot.children
let exercise_snapshot = child as! DataSnapshot
let exercise_value = exercise_snapshot.value as! Dictionary<String, String>
let exercise_name = exercise_value["name"]
...
...
以上代码中的新东西:
使用childSnapshot(forPath:)
以DataSnapshot
的形式访问exercises
属性。
Loop over the DataSnapshot.children
这个。
【讨论】:
【参考方案2】:希望这对您有所帮助。根据您的要求使用可选项。
struct WordSelector:Codable
let word:[Exrcices]
struct Exrcices:Codable
let detail:[Deatil]
let girl_hero: String
let nombre: String
struct Deatil:Codable
let name: String
let peso: String?
let reps: String
【讨论】:
但是如何从 Firebase 中获取数据?你能给我指路吗? 如果我们的结构确认 Codable 协议,我们可以在 swift 中解析一行数据,例如 User user = dataSnapshot.getValue(WordSelector.class);同样应该以您的语言提供。不知道对你有没有帮助 它对我有帮助,但我不知道如何调用 firebase getter 在 Swift 中获取这些数据 firebase.google.com/docs/firestore/query-data/get-data 选择了 swift 选项,这可能对您有所帮助以上是关于任何人都可以帮助从 FirebaseDatabase 获得 2 级深度字典吗?的主要内容,如果未能解决你的问题,请参考以下文章