Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 有人能帮助从FirebaseDatabase获取2级深度字典吗?_Swift_Firebase Realtime Database - Fatal编程技术网

Swift 有人能帮助从FirebaseDatabase获取2级深度字典吗?

Swift 有人能帮助从FirebaseDatabase获取2级深度字典吗?,swift,firebase-realtime-database,Swift,Firebase Realtime Database,我有以下FirebaseDatabase结构: 我需要从Firebase检索数据。 通常我使用这样的函数: funfunc getWodsFromDataBase () { print ("Get Wods From Data Base (AppDelegate)") let wodDb = Database.database().reference().child("wods") wodDb.observe(.childAdded) { (snapshot) in

我有以下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)
    }
}
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"]
        ...
    }
    ...
}

有人能帮我重写结构并从Firebase获取数据吗?

希望这对您有所帮助。根据您的要求使用可选选项

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
}

希望这对你有帮助。根据您的要求使用可选选项

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
}

听起来您想在快照中的
练习
节点的子节点上循环。你可以这样做:

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)
    }
}
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"]
        ...
    }
    ...
}
让wodDb=Database.Database().reference().child(“wods”)
在中观察(.childAdded){(快照)
让snapValue=snapshot.value为!字典
让女孩英雄=snapValue[“女孩英雄”]!
让nombre=snapValue[“nombre”]!
让练习\u snapshot=snapshot.childSnapshot(forPath:“练习”)
用于练习中的儿童{
让练习_snapshot=child as!DataSnapshot
让exercise\u value=exercise\u snapshot.value为!字典
让练习名称=练习值[“名称”]
...
}
...
}
上述代码中的新内容:

  • 用于作为
    DataSnapshot
    访问
    练习
    属性
  • 这个

听起来您想在快照中的
练习
节点的子节点上循环。你可以这样做:

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)
    }
}
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"]
        ...
    }
    ...
}
让wodDb=Database.Database().reference().child(“wods”)
在中观察(.childAdded){(快照)
让snapValue=snapshot.value为!字典
让女孩英雄=snapValue[“女孩英雄”]!
让nombre=snapValue[“nombre”]!
让练习\u snapshot=snapshot.childSnapshot(forPath:“练习”)
用于练习中的儿童{
让练习_snapshot=child as!DataSnapshot
让exercise\u value=exercise\u snapshot.value为!字典
让练习名称=练习值[“名称”]
...
}
...
}
上述代码中的新内容:

  • 用于作为
    DataSnapshot
    访问
    练习
    属性
  • 这个

但我如何才能从Firebase中输入数据?你能告诉我怎么走吗?在swift中,如果我们的结构符合可编码协议,我们可以在一行中解析数据,ex User User=dataSnapshot.getValue(WordSelector.class);您的语言中也应该有相同的版本。不确定它是否对您有帮助它对我有帮助,但我不知道如何调用firebase getter以在Swift中获取此数据选择Swift选项这可能对您有帮助但我如何从firebase中放置数据?你能告诉我怎么走吗?在swift中,如果我们的结构符合可编码协议,我们可以在一行中解析数据,ex User User=dataSnapshot.getValue(WordSelector.class);您的语言中也应该有相同的版本。不确定它是否对您有帮助它对我有帮助,但我不知道如何致电firebase getter以在Swift中获取此数据选择Swift选项这可能对您有帮助