【问题标题】:Can anyone helpe getting 2 level depth dictionary from FirebaseDatabase?任何人都可以帮助从 FirebaseDatabase 获得 2 级深度字典吗?
【发布时间】: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 获取数据?

【问题讨论】:

    标签: swift firebase-realtime-database


    【解决方案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"]
            ...
        }
        ...
    }
    

    以上代码中的新东西:

    【讨论】:

      【解决方案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 选项,这可能对您有所帮助
      猜你喜欢
      • 2021-12-13
      • 2012-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-12
      • 2020-12-01
      • 1970-01-01
      相关资源
      最近更新 更多