2017-05-16 3 views
0

Ich habe messages Kind, dasWie kann ich Array-Daten anstelle von Wörterbuch abrufen?

- "Some key" 
    - "messages" 
     - "child by autoid" 
      - "text": String 
      - "sender": String 
     - "child by autoid" 
      - "text": String 
      - "sender": String 
    - "create_date": Date 

Ich muss Abrufen von Nachrichten als Array ohne Auto-ID enthält. Kann ich das machen? Ich kann den Weg nicht finden, es zu tun.

Nun, ich es in Wörterbuch abrufen und dann auf Array zuordnen. Das Problem ist jedoch, dass der Index beim Mapping geändert wird. also wie kann ich es in Array abrufen?

+0

Wie ordnen Sie einem Array zu? welcher Index wird geändert, während Sie es tun. Was stimmt nicht mit der AutoId? Können Sie Code anzeigen, der das Problem veranschaulicht? – Jay

Antwort

1

Sie können den untergeordneten Wert beobachten und dann ein Array von FIRDataSnapshot aus den untergeordneten Elementen erstellen.

let ref = FIRDatabase.database().reference().child("messages") 
ref.observe(.value, with: snapshot in { 
    // each snap in snapshots  
    if let snapshots = snapshot.children.allObjects as? [FIRDataSnapshot] { 
     for snap in snapshots { 
      // do things 
     } 
    } 
}) 
+0

Danke Jen, aber ich brauchte auch "create_date" (ich habe mehr Informationen). also muss ich Kind über "Nachrichten" und "create_date" beobachten. – Oniikal3

+0

Oder muss ich "childadded" sowohl "Nachrichten" und "einige Schlüssel" beobachten? – Oniikal3

+0

Das Beobachten von beiden ist definitiv eine Option, besonders wenn die Daten nicht für einen gemeinsamen Zweck benötigt werden. Was ist die Beziehung zwischen "Nachrichten" und "create_date"? Müssen sie unter demselben Schlüssel sein? Warum kann "create_date" nicht unter "messages" sein? –

Verwandte Themen