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

使用swift检索iOS应用程序的firebase数据,ios,swift,firebase,Ios,Swift,Firebase,我正在使用firebase收集数据,我正在尝试为iPhone应用程序检索可用格式的数据,但我无法完全正确地获取数据。我正在用Swift编写应用程序 数据按日期字符串分组,然后按随机键分组,然后按数据分组。例如: { "20160304" : { "-KC-aOwSWpt4dlYmjJE4" : { "coordinates" : "-37.7811465912404, 145.005993055861", "event" : "Test event",

我正在使用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会让我感到困惑。 我希望能够获取定义日期(顶层)的详细数据(底层)。

试试这段代码

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

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

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

@Richie你可以对每个“json”使用相同的方法,它只会让你更深刻地理解一个层次。现在我得到的参数类型“AnyObject”不符合预期的类型“NSCopying”。。此外,它不知道'Location'@Richie在您的情况下,您只添加了一个孩子,但如果您有多个条目
ref.observeEventType(.ChildAdded,withBlock:{snapshot in let jsonLocations=snapshot.valueinportformat()as!NSDictionary let keys=jsonLocations.allKeys for key in key{let json=jsonLocations[key]as![String:AnyObject]self.sections.append(Location(JSONObject:json))}
@Richie查看此问题的答案,我可以问一下吗:每个日期节点下是否有多个随机键?将其交换并将节点名作为随机键和日期存储为子节点可能会有一些好处。日期已包含在时间子节点中,因此可能是多余的。你是按“时间”查询的吗?