2016-09-26 8 views
5

Moja Firebase wygląda następująco. Poniżej Active_Orders pojawia się childs o różnych nazwach w zależności od ich UID (ID użytkownika).Firebase uzyska ID dziecka swift ios

I to jest mój kod, aby uzyskać identyfikator dziecka bez względu na to, co nazywa. Ale w ogóle nie działa. Jaki jest właściwy sposób na uzyskanie child ID? Dzięki

databaseRef.child("Active_Orders").observeEventType(FIRDataEventType.Value, withBlock: { 
        snapshot in 
       //Get customerUID 
       let customerUID = snapshot.value!.objectForKey("username") as! String 
       self.setText("customerUID", value: customerUID) 
+0

Podaj swój minimalny ale suffise drzewo JSON .. nie urywek ale jako tekst .. – Dravidian

+0

Chcę się upewnić, rozumiem pytanie: W tym przypadku, aby identyfikator klienta był równy "ZDitJoAnqES6PPO3teK0EDQnGXJ2", zgadza się? – Ryan

+0

Nie, chcę wydrukować nazwę/identyfikator "Active_Orders -> Child" – Victor

Odpowiedz

11

Trudno powiedzieć z Twojego pytania, co dokładnie robisz, ale czy dostaniesz listę, której potrzebujesz?

databaseRef.child("Active_Orders").observeEventOfType(.Value, withBlock: { (snapshot) in 
    if let result = snapshot.children.allObjects as? [FIRDataSnapshot] { 
     for child in result { 
      var orderID = child.key as! String 
      print(orderID) 
     } 
    } 
}) 

Uważam ten blok powinien iteracyjne nad wszystkimi dziećmi, które są wewnątrz „Active_Orders” i wydrukować swoją wartość klucza (co wydaje się być co próbujesz wydrukować).

+0

Wielkie dzięki Ryan! – Victor

+0

Cieszę się, że mogę pomóc! – Ryan

1

Dla Swift 3 i Firebase 4

let ref = Database.database().reference() 

ref.child("Active_orders").observe(.value, with: { snapshot in 

    if !snapshot.exists() {return} //may want to add better error handling here. 

    let info = snapshot.value as! NSDictionary 

    print("info keys are:", info.allKeys) 
})