2016-07-30 13 views
1

Hier ist die Feuerbasis Datenbaum enter image description hereFeuerbasis Daten

Es gibt zwei Eltern und jeweils zwei Kind jeweils. Wie man alle Daten für "Sex" abruft.

Hier ist mein Code.

ref.child("Doctor").observeSingleEventOfType(.Value, withBlock: { (snapshot) in 
      if let result = snapshot.children.allObjects as? [FIRDataSnapshot] { 
       for child in result { 

        print("Here 1") 
        print(child) 
        let gender = child.value!["sex"] as? String 
        print("Here 2") 
        //print("Sex") 
        print(gender) 
       } 

      } else { 
       print("no results") 
      } 
     }) { (error) in 
      print(error.localizedDescription) 
     } 

Wenn ich den Wert des Geschlechts am Druck, es zeigt nil Wert.

+0

könnten Sie bitte hinzufügen, was Sie von 'print (Kind) erhalten' ? – adolfosrs

+0

Ich bekomme keinen Wert. –

+0

Ich bemühe mich zu verstehen, warum du deinem Kind Schnappschüsse nickst. Das Problem, das ich in Ihrem Code sehen kann, besteht darin, dass Sie nur in den übergeordneten Knoten iterieren. Sie müssen eine Ebene tiefer iterieren, um die Kindknoten zu erhalten, die die Geschlechtsinformation haben. Bedenken Sie jedoch, dass Ihre Datenstruktur nicht zuverlässig und sauber ist. Ich empfehle Ihnen dringend, etwas Zeit zu gewinnen, um sie zu refaktorisieren. Ich weiß nicht, warum hast du diese 2 Level tiefe Kinder mit Schlüsseln, aber du solltest sie in zwei verschiedenen Zweigen in der Datenbank trennen. – adolfosrs

Antwort

1

Sie versuchen, eine Ebene in Ihrem Code zu überspringen. Sie hören auf den Wert des Stammknotens und durchlaufen dann die untergeordneten Knoten. Dadurch erhalten Sie Snapshots der Knoten Msm... und eqn.... Wenn Sie innerhalb dieser Knoten überprüfen, hat keiner von ihnen eine untergeordnete Eigenschaft sex.

Um dies zu lösen, fügen Sie in Ihrem Code eine weitere Schleife in die Push-IDs zu bekommen (die Tasten mit -K Start):

ref.child("Doctor").observeSingleEventOfType(.Value, withBlock: { (snapshot) in 
     if let result = snapshot.children.allObjects as? [FIRDataSnapshot] { 
      for child in result { 
       for child2 in child.children { 
        let gender = child2.value!["sex"] as? String 
        print(gender) 
       } 
      } 

     } else { 
      print("no results") 
     } 
    }) { (error) in 
     print(error.localizedDescription) 
    } 
+0

Ich erhalte einen Fehler in der folgenden Zeile result2 = result.childred.allObjects als? [FIRDataSnapshot] Fehler ist "Wert des Typs [FIRDataSnapshop] hat kein Mitglied 'Kinder'" –