2017-02-15 22 views
4

Firebaseデータベースから特定の値を取得しようとしています。私はGoogleのような文書のいくつかを見たが、私はそれをすることができなかった。Swift Firebaseデータベースから特定の値を取得

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

スウィフトコード::私はユーザーではなく、みんなののE-Mail値を取得したい

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

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

ここではデータベースのJSONファイルがあります。どうやってやるの?

+0

あなたは私たちがあなたのためにコードを書いて欲しいですか?私たちが見て助けることができるように何を試したかを示すことができます。 –

+0

私は例を望んでいましたが、私はちょうど編集しました。 –

答えて

2

です。私が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

"E-Mail"子をクエリに追加します。

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

私はそれについて考えました、あなたは正しいですが、それはゼロを返します –

関連する問題