Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.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 正在尝试从Firebase实时数据库获取数据_Swift_Firebase - Fatal编程技术网

Swift 正在尝试从Firebase实时数据库获取数据

Swift 正在尝试从Firebase实时数据库获取数据,swift,firebase,Swift,Firebase,我正试图从Firebase中的realtine数据库中获取数据。 我在这里看到了一些答案,但找不到一个我理解并为我工作的解决方案。 这是我的代码: func ReadTeamPlayers(teamName name: String, completion: @escaping ([Player]?) -> Void) { var playersArray = [Player]() ref.child(name).observeSingleEvent(of: .value)

我正试图从Firebase中的realtine数据库中获取数据。 我在这里看到了一些答案,但找不到一个我理解并为我工作的解决方案。 这是我的代码:

func ReadTeamPlayers(teamName name: String, completion: @escaping ([Player]?) -> Void) {
    var playersArray = [Player]()
    ref.child(name).observeSingleEvent(of: .value) { (snapshot) in
        if let postDict = snapshot.value as? Dictionary<String, Any>{
            for dict in postDict {
                playersArray.append(Player(name: dict[snapshot.key] as! String, rank: dict[snapshot.value]))
            }
        }
    }
}
playerX是玩家的名字,数字是玩家的等级。 我怎样才能获得每个玩家的信息并在以后使用? 我尝试了几件事,但没有一件对我有用

编辑:我将上面的代码更改为当前代码,这是我现在遇到的错误:

Value of tuple type '(key: String, value: Any)' has no member 'subscript'
你需要

dic.forEach {
    let player = Player(playerName:$0.key, playerRank:$0.value) 
    arr.append(player)
}


变更响应

func ReadTeamPlayers(teamName name: String, completion: @escaping ([Player]?) -> Void) {


试试这个,你使用的是奇怪的泛型代码。保持简单

func ReadTeamPlayers(teamName name: String, completion: @escaping ([Player]?) -> Void) {
    var playersArray = [Player]()

    ref.child(name).observeSingleEvent(of: .value) { (snapshot) in

        guard let dictionary = snapshot.value as? [String: Any] else {
            print("empty snapshot")
            return
        }

        for dict in dictionary {
            print("playerName = \(dict.key)")

            if let playerRank = dict.value as? Int {
                print("playerRank = \(playerRank)")

                let player = Player(name: dict.key, rank: playerRank)
                playersArray.append(player)
            }

        }

    }
}

谢谢,我会试试,但dic是什么?我没有这样命名的变量,字典给了我一个错误。我编辑了OP,随着代码和错误的改变,我在OP中更改了上面的代码,你能看一下吗>?谢谢,现在正在编译。
func ReadTeamPlayers(teamName name: String, completion: @escaping ([Player]?) -> Void) {
func ReadTeamPlayers(teamName name: String, completion: @escaping ([Player]?) -> Void) {
    ref.child(name).observeSingleEvent(of: .value) { (snapshot) in
        if let mPlayer = snapshot.value as? [String:Int] {
              var arr = [Player]()
              mPlayer.forEach {
               let player = Player(playerName:$0.key, playerRank:$0.value) 
               arr.append(player)
             }
             completion(arr)

        }else{
             completion(nil)
        }
    }
}
func ReadTeamPlayers(teamName name: String, completion: @escaping ([Player]?) -> Void) {
    var playersArray = [Player]()

    ref.child(name).observeSingleEvent(of: .value) { (snapshot) in

        guard let dictionary = snapshot.value as? [String: Any] else {
            print("empty snapshot")
            return
        }

        for dict in dictionary {
            print("playerName = \(dict.key)")

            if let playerRank = dict.value as? Int {
                print("playerRank = \(playerRank)")

                let player = Player(name: dict.key, rank: playerRank)
                playersArray.append(player)
            }

        }

    }
}