使用swift检索iOS应用的firebase数据

时间:2016-03-31 08:22:35

标签: ios swift firebase

我正在使用firebase收集数据,并且我试图以可用的格式检索iPhone应用程序的数据,而且我无法正常使用它。我正在Swift中编写应用程序。

数据按日期字符串分组,然后用随机密钥分组,然后分组数据。例如:

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

我到目前为止抓住了这样的数据:

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

它会向控制台返回这样的内容:

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

有没有人知道我如何通过随机密钥进入下一个级别的有意义的数据?我之前在使用javascript时遇到了麻烦,但是使用swift让我很困惑。 我希望能够获取定义日期(最高级别)的详细数据(底层)。

2 个答案:

答案 0 :(得分:2)

试试此代码

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))
}

答案 1 :(得分:2)

我通常会尽可能长时间地坚持FDatasnapshot的方法,这会导致:

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