2017-07-28 20 views
1

私はJSONデータベースツリーを作成しました。これらのコードで特定の値を読み取ることができます。私はFirebase列のすべてのデータを取得する

ref.child("Personel").child("Name").observeSingleEvent(of: .value, with: { (snapshot) in 

      if let item = snapshot.value as? String{ 

       self.myList.append(item) 
       self.LessonsTableView.reloadData() 
      } 

     }) 

https://i.hizliresim.com/JlNEbj.png

テーブルビュー「アルバート・アインシュタイン」で見ることができる。しかし、私は個人的な列の下にどのカテゴリを見たいですか?あなたのループ場合>年齢、名前、写真

+0

いくつかの点:Firebaseには列はなく、親と子のみがキーと値に対応しています。親ノード内に*の子キーが存在するかどうかを確認する*。 (あなたの例のキーは年齢、名前、写真です)。質問を更新して、もう少し明確にすることもできます。それはまた良い質問です。将来的にFirebaseの構造をテキストとして記述してください。イメージはありません。そうすれば、答えに使用されていれば再入力する必要はありません。 – Jay

答えて

0

- このように、

https://i.hizliresim.com/9dApPO.png

は、「個人」の下にあるどの列を取得または学ぶためにどのような方法は、テーブルビューの出力がなければなりません

ありますsnapshot.valueを使用すると、データベースからkeyを取得できるはずです。 JavaScriptで

それはのようになります。これは一つの方法です

ref.child("Personel").child("Name").observeSingleEvent(of: .value, with: { (snapshot) in 

    if let item = snapshot.value as? String{ 

     self.myList.append(item) 
     self.LessonsTableView.reloadData() 
    } 

    var vals = snapshot.val(); 
    for(var property in vals) { 
     console.log(property); // property has those values in it 
    } 

}) 
+0

このコードは値を配列に追加します.OPは値ではなくスナップショットにKEYSを必要とします。 – Jay

+0

キーは返されます – Levi

+0

? Snapshot.valueはキーではなくスナップショットに含まれる*値*を返します。この答えでは、その値がmyList配列に追加されます。しかし、あなたの答えが「名前」キーを使用しているため、OPがキーを認識しないため、OPはどちらも機能しません。 – Jay

0

ref.child("Personel").observeSingleEvent(of: .value, with: { (snapshot) in 
    self.myList.append(snapshot.childSnapshot(forPath: "Age").value) 
    self.myList.append(snapshot.childSnapshot(forPath: "Name").value) 
    self.myList.append(snapshot.childSnapshot(forPath: "Photo").value) 
    self.LessonsTableView.reloadData() 
}) 
+0

これは、キーがわかっている場合にのみ機能します。実際のキーを取得したいのですが、値ではありません。 – Jay

+0

ああ...ループが必要です。私はキャストに必要な呪文を見上げる気がしなかった。しかし、私はあなたがあなたの答えですでにそれをしたのを見ます。 :-D –

1

あなたはそれが子供次にそれらの子供のキー

をのget、スナップショットを反復処理することができますユーザーがいるユーザーノードがあるとします

users 
    user_0 
    fav_game: "WoW" 
    name: "Leroy" 
そしてfav_game:

は、その名前のキーを取得する

let userRef = self.ref.child("users").child("user_0") 
userRef.observeSingleEvent(of: .value, with: { snapshot in 
    for child in snapshot.children { 
     let snap = child as! DataSnapshot 
     let key = snap.key 
     print(key) 
    } 
}) 

プリントを

fav_game 
name 

それは(これにキーをデータを保持しますので、重要な注意点は

for child in snapshot.children 

です大文字小文字)スナップショットがディクショナリにダンプされた場合、そのスナップショットは失われます。

関連する問題