2016-10-01 4 views
2

У меня есть приложение, в котором есть Темы и категории, одна категория может принадлежать одной или нескольким темам, я пытаюсь отфильтровать данные, чтобы показывать только категорию, которая имеет определенную тему идентификатор помечена как верно, это структура: enter image description here Categories with references to the topics ID.От одного до большого запроса с Firebase и Swift 3

Вот код я придумал (который работал на Swift 2.3):

self.ref = FIRDatabase.database().reference(fromURL: FIREBASE_URL).child("categories") 
let query = ref?.queryOrdered(byChild: "topics/idt2").queryEqual(toValue: true) 
query!.observe(.value, with: { (snapshot) in 
    //This should bring back both categories, Soccer and Moon 

    print("Inside query \(snapshot.value)") // Prints null 

}) 

Любые идеи?

+0

Фокс следующий вопрос: вы включили изображение вашего дерева JSON в свой вопрос. Пожалуйста, замените это на фактический JSON как текст, который вы легко можете получить, нажав кнопку «Экспорт» в консоли базы данных Firebase. Наличие JSON в качестве текста делает его доступным для поиска, позволяет нам легко использовать его для тестирования с вашими фактическими данными и использовать его в нашем ответе, и в целом это просто хорошая вещь. –

ответ

3

Когда вы выполняете запрос к базе данных Firebase, потенциально может быть несколько результатов. Таким образом, снимок содержит список этих результатов. Даже если есть только один результат, моментальный снимок будет содержать список из одного результата.

Вам нужно будет обрабатывать этот список в вашем обратного вызова блока:

query!.observe(.value, with: { (snapshot) in 
    for child in snapshot.children { 
     print(child.key) 
    } 
}) 

Также смотрите:

+1

Еще раз спасибо за помощь, всего лишь небольшую деталь, этот код не работает в Swift 3.0, исправьте меня, если я ошибаюсь, но теперь, чтобы использовать значения из моментального снимка, вы сначала конвертируете его в NSDictionary или NSArray, что-то вот так: http://pastebin.com/f7q8kbvJ –

Смежные вопросы