2017-02-15 111 views
4

我試圖從Firebase數據庫中獲取特定值。我看了一些像Google這樣的文件,但我做不到。這裏是數據庫的JSON文件:Swift從Firebase數據庫中獲取特定值

{ 
    "Kullanıcı" : { 
     "ahmetozrahat25" : { 
      "E-Mail" : "[email protected]", 
      "Yetki" : "user" 
     }, 
     "banuozrht" : { 
      "E-Mail" : "[email protected]", 
      "Yetki" : "user" 
     } 
    } 
} 

Swift代碼:

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價值。我怎樣才能做到這一點?

+0

您希望我們爲您編寫代碼?您可以顯示您嘗試過的內容,以便我們查找和幫助。 –

+0

我想要一個例子,但你剛好是我編輯的。 –

回答

2

最後我找到了一個解決方案。如果我聲明一個變種,並嘗試使用它後返回零,但如果我嘗試使用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

將「電子郵件」子項添加到查詢中。

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 
    } 
}) 
1

在您的代碼中,快照將包含子值的字典。要訪問它們,將snapshot.value作爲一個字典,然後訪問個別孩子是一個快照(鏡頭,哈哈)

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)") 
}) 
+0

我想過,你是對的,但它返回零 –

相關問題