2016-09-21 5 views
0

Ich habe zuvor eine Frage bezüglich des Zugriffs auf Daten in einem Kind-Snapshot gestellt, wo ich eine sehr gute Antwort erhalten habe. Diese Lösung erlaubte mir jedoch nur, die Daten nach Wert abzurufen - und nicht mein Kind. Sie sehen, hatte ich eine JSON Baumstruktur wie folgt aus:Swift Firebase Zugriffsdaten im Child-Snapshot (von childAdded)

Players { 

PlayerID { 

Username 

Rank 

Achievements { 

Rookie: yes 

} 


} 

Und dann erkannte ich, dass ich mehrere ‚childByAutoId‘ unter ‚Erfolge‘ wirklich - das so etwas wie folgt aussehen:

Player { 

PlayerID { 

Username 

Rank 

Achievements { 

autoID1 { 

isAchieved: yes 

} 

autoID2 { 

isAchieved: yes 

} 

} 

} 

Also, wie würde ich weiter versuchen, die sehr ChildValues ​​jedes Kindes zu bekommenByAutoId? Ich weiß zwar, dass dies mit dem "ChildAdded" auf "Observe Snapshot" funktioniert, aber das scheint hier kein Feature zu sein. Hier

ist der Code Ich habe jetzt:

if let childSnapshot = snapshot.childSnapshot(forPath: "Achievements") as? FIRDataSnapshot{ 

       if let achievementDictionary = childSnapshot.value as? [String:AnyObject] , achievementDictionary.count > 0{ 

        if let achieveMedal = achievementDictionary["Rookie"] as? String { 

         print(achieveMedal) 

      }   
     } 
    } 

Hilfe wäre sehr dankbar!

Antwort

1

Wie über eine JSON Baumstruktur wie folgt aus: -

Achievements : { 

achievement1 : true, 
achievement2 : true, 
achievement3 : false, 
achievement4 : true, 

} 

Für Ihre Leistungen abrufen: -

if let childSnapshot = snapshot.childSnapshot(forPath: "Achievements") as? FIRDataSnapshot{ 

      if let achievementDictionary = childSnapshot.value as? [String:AnyObject] , achievementDictionary.count > 0{ 

       for each in achievementDictionary{ 
        print(each.0) // achievement name 
        print(each.1) // isAchieved (true/false) 
       } 

     }   
    } 
} 

Es ist nicht ratsam, solche tiefen Knoten in Ihrem DB für die Navigation Vernunft hinzuzufügen.

Aber dieser Code funktioniert auch für die childByAutoID Fall, dh each.0 Ihre autoID und each.1 wird geworden, dass ids dictionary.For tiefer Details dieses Wörterbuch nur navigieren Sie durch das Wörterbuch

+0

Das Problem entspricht ist, dass ich in jedem "childByAutoId", das ich auch brauche, noch mehr Daten bereitstellen muss. Hmmm .. Ist das nicht möglich? – askaale

+0

Aktualisiert meine Antwort, Lesen Sie den letzten Teil .. – Dravidian

+0

Ich dachte mir alles aus, vielen Dank! :) – askaale

Verwandte Themen