Swift从Firebase数据库中获取特定价值

时间:2017-02-15 17:42:37

标签: ios swift firebase firebase-realtime-database

我正在尝试从Firebase数据库中获取特定值。我看了一些像谷歌这样的文件,但我做不到。这是数据库的JSON文件:

{
    "Kullanıcı" : {
        "ahmetozrahat25" : {
            "E-Mail" : "ahmetozrahat25@gmail.com",
            "Yetki" : "user"
        },
        "banuozrht" : {
            "E-Mail" : "banuozrahat@gmail.com",
            "Yetki" : "user"
        }
    }
}

Swift Code:

ref?.child("Kullanıcı").child(userName.text!).observeSingleEvent(of: .value, with: { (snapshot) in

    if let item = snapshot.value as? String{
        self.changedName = item
    }
})

我希望获得用户的E-Mail价值,而不是每个人的价值。我怎么能这样做?

3 个答案:

答案 0 :(得分:8)

最后我找到了解决方案。如果我声明一个var并尝试稍后使用它会返回nil,但如果我尝试使用snapshot.value as? String它就可以了。这是我做的一个例子。

    ref: FIRDatabaseReference?
    handle: FIRDatabaseHandle?

    let user = FIRAuth.auth()?.currentUser

    ref = FIRDatabase.database().reference()

    handle = ref?.child("Kullanıcı").child((user?.uid)!).child("Yetki").observe(.value, with: { (snapshot) in

        if let value = snapshot.value as? String{

            if snapshot.value as? String == "admin"{
                self.items.append("Soru Gönder")
                self.self.tblView.reloadData()
            }
        }
    })

答案 1 :(得分:4)

在您的代码中,快照将包含子值的字典。要访问它们,请将snapshot.value转换为Dictionary,然后访问各个子项是一个快照(镜头,哈哈)

ref?.child("Kullanıcı").child(userName.text!)
                       .observeSingleEvent(of: .value, with: { (snapshot) in

    let userDict = snapshot.value as! [String: Any]

    let email = userDict["E-Mail"] as! String
    let yetki = userDict["Yetki"] as! String
    print("email: \(email)  yetki: \(yetki)")
})

答案 2 :(得分:2)

添加"电子邮件"孩子到查询。

ref?.child("Kullanıcı").child(userName.text!).child("E-Mail").observeSingleEvent(of: .value, with: { (snapshot) in

    if let item = snapshot.value as? String{
        self.changedName = item
    }
})