2016-04-19 20 views
1

Ich verwende Firebase für meine Swift-iOS-Anwendung. Ich fand das Lernprogramm zum Abrufen von Daten in Firebases Handbuch ein wenig verwirrend und ich bin mir nicht sicher, warum, wenn ich versuche, auf vorhandene Werte in meiner Datenbank zuzugreifen, zu Nullwerten führt.Abrufen von Daten mit Firebase Swift

Dies ist, was ich bisher:

usersRef.queryOrderedByChild("fbid").queryEqualToValue(userId).observeSingleEventOfType(.Value, withBlock:{ snapshot in 
         print("SNAPSHOT: ",snapshot.value) 

Hier ist das Ergebnis des Druckens Snapshot ist.

SNAPSHOT: { 
    1 = { 
     fbid = 1; 
     firstName = Michelle; 
     friendlist =   { 
      9 = "Kevin C"; 
     }; 
     lastName = C; 
     profilepicurl = "https:; 
     uid = "facebook:1"; 
    }; 
} 

jedoch die Linie unterhalb Ergebnisse in:
fataler Fehler: unerwartet gefunden, gleich Null, während ein optionaler Wert Abwickeln

firstName = snapshot.value.objectForKey("firstName") as! String 

ich alle Werte für den Benutzer abzurufen möchten (vorName, profilepicurl , Freundesliste usw.) und speichern sie in Variablen. Es scheint einfach, aber vielleicht fehlt mir etwas. Jede Hilfe wäre willkommen.

Antwort

6

Ihr FDataSnapshot enthält kein Kind firstName. Es enthält nur ein Kind 1.

Dies liegt daran, dass Sie eine Abfrage durchführen und dann nach einem Wert fragen. Da eine Abfrage viele Ergebnisse haben kann, gibt sie eine Ergebnisliste zurück. Selbst wenn nur es gibt ein Ergebnis, es ist immer noch eine Liste von 1.

Die Lösung Schleife über die Kinder ist:

usersRef.queryOrderedByChild("fbid") 
     .queryEqualToValue(userId) 
     .observeSingleEventOfType(.Value, withBlock:{ snapshot in 
      for child in snapshot.children { 
       print("Loading group \(child.key!)") 
      } 
}) 
+0

Danke für die schnelle Antwort, ich werde es versuchen und zurück für dich. – Mishy

+0

Akzeptiert Ihre Antwort als Lösung. Danke noch einmal! – Mishy

Verwandte Themen