Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.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 5(iOS)从Firebase数据库中获取和打印单个值_Ios_Swift_Firebase_Firebase Realtime Database - Fatal编程技术网

无法使用Swift 5(iOS)从Firebase数据库中获取和打印单个值

无法使用Swift 5(iOS)从Firebase数据库中获取和打印单个值,ios,swift,firebase,firebase-realtime-database,Ios,Swift,Firebase,Firebase Realtime Database,目标:尝试将Firebase实时数据库中的值“email”打印到XCode 11控制台。请参阅提供的代码和JSON摘录 评论:这似乎是一个相当明显的问题,但是在尝试了一些建议之后,包括,和Firebase文档,我似乎仍然错过了一些东西 代码: func updateRiskValue() { var databaseReference: DatabaseReference! databaseReference = Database.database().reference()

目标:尝试将Firebase实时数据库中的值“email”打印到XCode 11控制台。请参阅提供的代码和JSON摘录

评论:这似乎是一个相当明显的问题,但是在尝试了一些建议之后,包括,和Firebase文档,我似乎仍然错过了一些东西

代码:

func updateRiskValue() {

    var databaseReference: DatabaseReference!

    databaseReference = Database.database().reference()

    let currentUser = Auth.auth().currentUser
    databaseReference.child("users").child((currentUser?.uid)!).child("email").observeSingleEvent(of: .value, with: { (snapshot) in

        let value = snapshot.value as? NSDictionary

        let valueRisk = value?["email"] as? String ?? ""

        print(valueRisk)

    }) {(error) in
        print(error.localizedDescription)
    }
}

@IBAction func riskSlider(_ sender: UISlider) {

    updateRiskValue()

}
"users" : {
"ihhqjBDfIYeyl5QqsnFl1LVrXRG3" : {
  "email" : "alexander@gmail.com",
  "isCheckedCount" : 3,
  "kycitems" : {
    "Attach Government Documents" : {
      "isChecked" : false
    },
    "Client Knowledge" : {
      "isChecked" : true
    },
    "Contact Information" : {
      "isChecked" : true
    },
    "PEP Check" : {
      "isChecked" : true
    },
    "Risk Assessment" : {
      "isChecked" : true
    },
    "Source of Wealth" : {
      "isChecked" : true
    },
    "Transit Account Holders" : {
      "isChecked" : true
    },
    "Transit Account Numbers" : {
      "isChecked" : false
    }
  },
  "password" : "123123",
  "riskValue" : "1",
  "todos" : {
    "Hello" : {
      "isChecked" : false
    }
JSON摘录:

func updateRiskValue() {

    var databaseReference: DatabaseReference!

    databaseReference = Database.database().reference()

    let currentUser = Auth.auth().currentUser
    databaseReference.child("users").child((currentUser?.uid)!).child("email").observeSingleEvent(of: .value, with: { (snapshot) in

        let value = snapshot.value as? NSDictionary

        let valueRisk = value?["email"] as? String ?? ""

        print(valueRisk)

    }) {(error) in
        print(error.localizedDescription)
    }
}

@IBAction func riskSlider(_ sender: UISlider) {

    updateRiskValue()

}
"users" : {
"ihhqjBDfIYeyl5QqsnFl1LVrXRG3" : {
  "email" : "alexander@gmail.com",
  "isCheckedCount" : 3,
  "kycitems" : {
    "Attach Government Documents" : {
      "isChecked" : false
    },
    "Client Knowledge" : {
      "isChecked" : true
    },
    "Contact Information" : {
      "isChecked" : true
    },
    "PEP Check" : {
      "isChecked" : true
    },
    "Risk Assessment" : {
      "isChecked" : true
    },
    "Source of Wealth" : {
      "isChecked" : true
    },
    "Transit Account Holders" : {
      "isChecked" : true
    },
    "Transit Account Numbers" : {
      "isChecked" : false
    }
  },
  "password" : "123123",
  "riskValue" : "1",
  "todos" : {
    "Hello" : {
      "isChecked" : false
    }

您正在向
/Users/$uid/email
添加一个观察者,因此您得到的
快照只包含
email
属性的值。然而,您将其视为字典,这就解释了为什么您的代码不起作用

要解决此问题,请从

databaseReference.child("users").child((currentUser?.uid)!).child("email").observeSingleEvent(of: .value, with: { (snapshot) in

    let valueRisk = snapshot.value as? String
    print(valueRisk)

}) {(error) in
    print(error.localizedDescription)
}

谢谢你的建议!然而,当应用时,函数只返回“nil”。哎呀,代码片段中有一个类型,我仍然试图将它转换为字典。它现在正在转换为一个字符串,该字符串应该可以工作(如果该值存在)。