从firebase swift读取数据

You*_*dan 4 firebase swift firebase-realtime-database

我正在尝试从 firebase 数据库中检索数据,但是当我运行代码时,它什么也没显示,尽管没有显示错误

我从 Firebase 手册中得到了这段代码,顺便说一句,我很确定路径是正确的

let ref = FIRDatabase.database().reference()

ref.child("users").child("user").child(username).observeSingleEvent(of: .value, with: { (snapshot) in
        // Get user value
        let value = snapshot.value as? NSDictionary
        let score = value?["score"] as? String ?? ""
        print(score)

        // ...
    }) { (error) in
            print(error.localizedDescription)
}
Run Code Online (Sandbox Code Playgroud)

JSON

{
  "users" : {
    "user" : {
      "e1410kokeZS8xv81J1RzhN4V2852" : {
        "email" : "aaaa@gmail.com",
        "score" : 0,
        "username" : "Afnan"
      },
      "jPx8XJ3Q9AazDM7qIOhz02PBfh22" : {
        "email" : "aaaa@ggg.com",
        "score" : 13,
        "username" : "ghhh"
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

Nir*_*v D 6

您正在侦听.value事件,但您的块一次只处理一个项目,因此请使用.childAdded事件。

let ref = FIRDatabase.database().reference().child("users").child("user").child(username)

ref.observeSingleEvent(of: .childAdded, with: { (snapshot) in
     if let userDict = snapshot.value as? [String:Any] {
          //Do not cast print it directly may be score is Int not string
          print(userDict["score"]) 
     }
})
Run Code Online (Sandbox Code Playgroud)

注意:在 Swift 中使用 nativeDictionary而不是NSDictionary