2016-10-07 5 views
0

Ich versuche, den Schlüssel eines Knotens basierend auf dem Kind zu erhalten. Hier ist meine StrukturAbrufen des Schlüssels einer Knotenbasis auf Kind

Code:

RESTAURANTS 
    KTNfWKLD0isCsrpys 
     name: “McDonalds” 
     loc: “LA” 
    KTNfWILD0iIkLLekc 
     name: “KFC” 
     loc: “LV” 

Code:

FIRDatabase.database().reference().child("RESTAURANTS").queryOrderedByChild("name").queryEqualToValue("McDonalds").observeEventType(.Value, withBlock: { (snapshot) in 
    print(snapshot.key) 
}, withCancelBlock: nil) 

Wie kann ich den Schlüssel von "McDonalds" in einer Abfrage zu bekommen?

+0

was; s die Ausgabe von 'print (snapshot.key)'? –

+0

Es gibt "RESTAURANTS" aus. –

Antwort

2

Sie müssen allKeys verwenden, um Schlüssel aus Snapshots zu erhalten und als Schleife, um den Schlüssel nacheinander zu erhalten. Versuchen Sie diesen Code

FIRDatabase.database().reference().child("RESTAURANTS").queryOrderedByChild("name").queryEqualToValue("McDonalds").observeEventType(.Value, withBlock: { (snapshot) in 
    if snapshot.exists() { 
     for key in (snapshot.value?.allKeys)!{ 
      print(key) 
     } 
    } 
} 

Als @Frank van Puffelen sagte: Diese Art der Iteration die Reihenfolge der untergeordneten Knoten verliert. Wenn Sie bestellt Liste als snapshot.children zuerst möchten

+0

Beachten Sie, dass diese Art der Iteration die Reihenfolge der untergeordneten Knoten verliert. Während dies in diesem speziellen Fall wahrscheinlich keine Rolle spielt (da OP eine Gleichheitsprüfung verwendet), finde ich es im Allgemeinen am besten, wenn ich zuerst über "snapshot.children" iteriere und erst dann den ".value" jedes Kindes erhalte. –

+0

Ich habe das versucht und habe nichts gedruckt. –

+0

@FrankvanPuffelen Hallo! Ich habe viele Posts zum Bestellen gelesen, basierend auf dem Absteigen mit Firebase, und ich muss die Reihenfolge beibehalten, habe aber Probleme, den Schlüssel oder Wert von einem Kind zu bekommen, wenn ich über Kinder iteriere. In iOS heißt es, Kind (NSFastEnumerationIterator) hat keinen Mitgliedsschlüssel oder -wert. Es gibt unter jedem Kind die Daten zurück, die ich als Wörterbuch habe, aber ich brauche den Schlüssel für dieses Kind. Danke im Voraus! Ich habe Ihre anderen Kommentare in anderen Beiträgen ebenfalls hilfreich gefunden. –

Verwandte Themen