2016-06-28 11 views
1

Ich habe dieses Stück funktionierenden Code versucht, die Daten zu Firebase speichert:Trouble Abrufen von Daten aus Firebase

let locRef = locationRef.childByAutoId() 
let locItem = [ 
    senderId : [ 
     "location": getLocationID() 
    ] 
] 

locRef.setValue(locItem) 

Und ich will den Benutzer abgerufen werden (durch SenderID identifiziert) „Standort“, so habe ich versucht, diese Stück Code:

locationRef.child("location").child(senderId).observeSingleEventOfType(.Value, withBlock: { (snapshot) in 
     self.locationId = snapshot.value!["location"] as! String 
    }) { (error) in 
     print(error.localizedDescription) 
    } 

aber meine Anwendung, wenn das Stück Code abstürzt ausgeführt wird, und es gibt keine Fehler. Ich denke mein Fehler könnte sein, dass .child("location") etwas anderes sein muss, aber ich weiß nicht was.

Datenbankstruktur (JSON):

{ 
    "locations" : { 
    "-KLEdoj2eiF7EW9m0815" : { 
     "W6vSOHZLTwNM33JYqkKHvaIVRF13" : { 
     "location" : "Seattle, WA" 
     } 
    }, 
    "-KLLfcOvYHwIufBALM0-" : { 
     "W6vSOHZLTwNM33JYqkKHvaIVRF13" : { 
     "location" : "London, United Kingdom" 
     } 
    }, 

Jede mögliche Hilfe Dank geschätzt!

+0

könnten Sie beschreiben, wie genau ist dein Datenbankschema strukturiert? Sie können eine JSON-Exportdatei in der Datenbank -> Daten finden. Bitte hängen Sie es an Ihre Frage an, damit wir Ihnen helfen können. – adolfosrs

+0

Ich habe meine Frage aktualisiert –

+0

Wie deklarieren Sie 'locationRef'? – adolfosrs

Antwort

0

Sie sollen wie die folgenden

FIRDatabase.database().reference().child("locations").child(locationId).child(senderId).observeSingleEventOfType(.Value, withBlock: { (snapshot) in 
     self.location = snapshot.value!["location"] as! String 
} 

Zum Beispiel, um Ihren Standort mit Bezug:

Wenn Sie locationId = "-KLEdoj2eiF7EW9m0815" und senderId = "W6vSOHZLTwNM33JYqkKHvaIVRF13" der oben Anruf haben wird eingestellt die self.location-"Seattle, WA"

+0

Sorry, der obige Code funktioniert nicht ... Ich bin super verwirrt, weil locationID die Variable, die ich die abgerufenen Daten auch einstellen, warum rufen Sie '.child (locationID)'? –

+0

@AhadSheriff Ich habe es 'locationId' genannt, weil Sie in den Datenbankbaum, den Sie angehängt haben, IDs in Ihrem Zweig'/locations' finden. (Ich gehe davon aus, dass Sie mit '/ location/locationId/senderId' arbeiten) oder welche Ids speichern Sie in'/locations'? – adolfosrs

Verwandte Themen