2017-07-28 3 views
1

Ich habe den JSON-Datenbankbaum erstellt und kann mit diesen Codes bestimmte Werte lesen. Ich kannAlle Daten in einer Firebase-Spalte abrufen

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

auf Tabellenansicht „Albert Einstein“ sehen Aber, ich mag, welche Kategorien unter Persönlichen Spalt sehen? Wie diese

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

Gibt es eine Möglichkeit zu erhalten oder zu lernen, welche Spalten unter „Personal“

Tabellenansicht Ausgang muss sein -> Alter, Name, Foto

+0

Ein paar Dinge: Es gibt keine Spalten in Firebase, nur Eltern und Kinder, die Schlüssel und Werte entsprechen. Sie fragen, welche * Kinderschlüssel in einem Elternknoten * existieren. (Die Schlüssel in Ihrem Beispiel sind Alter, Name und Foto). Vielleicht möchten Sie Ihre Frage aktualisieren, damit sie etwas klarer wird. Es ist auch eine gute Frage. Fügen Sie in Zukunft Ihre Firebase-Struktur bitte als Text, keine Bilder hinzu. Auf diese Weise müssen wir es nicht erneut eingeben, wenn es in einer Antwort verwendet wird. – Jay

Antwort

0

Wenn Sie Schleife durch snapshot.value sollten Sie in der Lage sein, die key s aus der Datenbank zu bekommen.

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

Dieser Code hängt die Werte an ein Array an - das OP möchte die KEYS im Snapshot haben, nicht die Werte. – Jay

+0

Es gibt die KEYS zurück – Levi

+0

Wie? Snapshot.value gibt einen * Wert * zurück, der im Snapshot enthalten ist, nicht der Schlüssel. In dieser Antwort wird dieser Wert an das myList-Array angehängt. Bitte beachten Sie jedoch, dass Ihre Antwort in Ihrer Antwort die Taste "Name" verwendet und das OP den Schlüssel nicht kennt, so dass es auch nicht funktioniert. – Jay

0

Dies ist eine Möglichkeit:

In JavaScript wäre es so etwas wie

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

Das funktioniert nur, wenn die Schlüssel bekannt sind - er will die eigentlichen Schlüssel bekommen, nicht die Werte ;-) – Jay

+0

Ah ... das würde eine Schleife erfordern. Ich hatte keine Lust, die Beschwörungsformel nachzuschlagen. Aber ich sehe, du hast das schon in deiner Antwort getan. :-D –

1

Sie können über den Schnappschuss laufen, es ist Kinder bekommen und dann diese Kinder Tasten

Angenommen, Sie haben einen Benutzerknoten mit einem Benutzer

dann die Schlüssel des Namens zu erhalten: und 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) 
    } 
}) 

druckt

fav_game 
name 

Ein wichtiger Hinweis ist

for child in snapshot.children 

, weil das die Daten (Schlüssel in dieser halten Fall) in der Reihenfolge. Wenn der Snapshot in ein Wörterbuch geschrieben wird, verliert er die Reihenfolge.

Verwandte Themen