Bullwinkle
Bullwinkle

Reputation: 359

retrieving firebase data for iOS app using swift

I'm using firebase to collect data, and i'm trying to retrieve the data in a usable format for an iPhone app, and i can't quite get it out properly. I'm writing the app in Swift.

The data is grouped by a date string then the with a random key and then the data. Eg:

{
  "20160304" : {
    "-KC-aOwSWpt4dlYmjJE4" : {
      "coordinates" : "-37.7811465912404, 145.005993055861",
      "event" : "Test event",
      "time" : "2016-03-04 07:48:43 +0000"
    }, etc...

I'm so far grabbing the data like this:

ref.queryOrderedByKey().observeEventType(.ChildAdded, withBlock: {
        snapshot in
        //print(snapshot.key) // date
        print(snapshot.value)
    })

And it returns something like this to the console:

{
"-KD8O0gL7gDGu_hRyFzQ" =     {
    coordinates = "-37.7540958861003, 145.001224694195";
    event = "Test event";
    time = "2016-03-18 11:02:32 +0000";
}; etc...

Does anyone know how i can get down to the next level, past the random keys, to the meaningful data? I had trouble before with this for javascript, but it's confusing me using swift. I'd like to be able to grab the detailed data (bottom level) for a defined date (top level).

Upvotes: 2

Views: 2003

Answers (2)

Frank van Puffelen
Frank van Puffelen

Reputation: 598765

I usually try to stick to methods of FDatasnapshot as long as possible, which leads to:

ref.queryOrderedByKey().observeEventType(.ChildAdded, withBlock: { snapshot in
    for child in snapshot.children {
        print(child.key); // -KC-aOwSWpt4dlYmjJE4
        print(child.childSnapshotForPath("event").value)
    }
});

Upvotes: 2

Sasha Kozachuk
Sasha Kozachuk

Reputation: 1303

Try this code

let jsonLocations = snapshot.valueInExportFormat() as! NSDictionary
let keys = jsonLocations.allKeys

for key in keys {
    let json = jsonLocations[key] as! [String: AnyObject]
    self.sections.append(Location(JSONObject: json))
}

Upvotes: 2

Related Questions