2016-03-31 4 views
2

Я использую firebase для сбора данных, и я пытаюсь получить данные в удобном для использования формате для iPhone-приложения, и я не могу его правильно вывести. Я пишу приложение в Swift.получение данных о бомбе для приложения iOS с помощью 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, но это сбивает меня с толку. Я хотел бы иметь возможность получить подробные данные (нижний уровень) за определенную дату (верхний уровень).

+0

Могу ли я спросить: у вас есть несколько случайных ключей в рамках каждой дата узла? Может быть, есть какая-то польза для замены этого и имя узла - это случайный ключ и дата, хранящаяся как ребенок. Дата уже содержится во временном дочернем узле, что может быть избыточным. Вы запрашиваете «время»? – Jay

ответ

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

спасибо. ему не нравится «jsonSections»? – Richie

+0

@ Ричи извините, я отредактировал свой ответ. –

+0

@Richie вы можете использовать один и тот же метод для каждого «json», и он просто поставит вас на один уровень глубже. –

2

Я обычно стараюсь придерживаться методов FDatasnapshot как можно дольше, что приводит к:

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