2015-12-14 1 views
1

Несколько дней назад я спросил this question о получении данных из Firebase. Ответ на вопрос включал цикл for через петлевые дочерние узлы, используя FEventTypeValue и свойство .children для моментальных снимков. Он отлично работал, делая то, что мне было нужно.Свойство .children на Firebase iOS отображается как ноль, когда есть дочерние узлы

Однако, я пробовал использовать подобную логику, и он показывает .children как nil.

Вот как выглядит данные, как:

--languagesList ----English -------Ari ---------Age: 28 ---------Country: United States ---------distance: 2 -------Philip ---------Age: 27 ---------Country: United States ---------distance: 1 ----Spanish -------Mauricio ---------Age: 30 ---------Country: Mexico ---------distance: 4

Вот пример кода (это в viewDidLoad):

NSString* selectedLanguagePath = [NSString stringWithFormat:@"languagesList/%@", [DataSource sharedInstance].languageSelected]; 
Firebase *languagesRef = [[DataSource sharedInstance].ref childByAppendingPath:selectedLanguagePath]; 
[[languagesRef queryOrderedByChild:@"distance"] observeEventType:FEventTypeValue withBlock:^(FDataSnapshot *snapshot) { 

    for (FDataSnapshot *child in snapshot.children) { 

     NSDictionary *dict = child.value; 
     NSString *uid = child.key; 
     NSLog(@"%@", child.key); 
     NSLog(@"%@", child.value); 
     NSLog(@"%@", snapshot.key); 
     NSLog(@"%@", snapshot.value); 

     [self.distanceMutableArray addObject:dict]; 

    } 


    NSLog(@"%@", snapshot.key); 
    NSLog(@"%@", snapshot.value); 
    NSLog(@"%@", snapshot.children); 
    NSLog(@"%lu", (unsigned long)snapshot.childrenCount); 
    NSLog(@"%@", snapshot.priority); 
    NSLog(@"%@", snapshot.ref); 
    NSLog(@"%@", self.distanceMutableArray); 
}]; 

В примере, цикл никогда не заканчивается, потому что .children является ноль. snapshot.key - это «английский», что является правильным в этом случае. Snapshot.childrenCount равен нулю, хотя этого не должно быть.

Любые советы? То, что я пытаюсь сделать, это заполнить массив всей информацией на «английском» узле кода, который сортируется по расстоянию. Таким образом, это будет набор словарей, который бы выглядел так:

NSArray* englishArray = @[@{"Age": @27, "Country": @"United States", "distance": @1}, @{"Age": @28, "Country": @"United States", "distance": @2} 

}; более

Одна вещь, в моей безопасности и правил, у меня есть:

"languagesList": {".read": true, ".write": true, ".indexOn" : "distance"} 
+0

Не имеет отношения, но где находится 'self.distanceMutableArray'? – trojanfoe

+0

Извините, это не словарь словарей, который я надеюсь сделать, это набор словарей. Я сейчас отредактирую вопрос –

+0

Хорошо. Теперь скажите мне, где это выделено. – trojanfoe

ответ

0

Так что это был тупой ошибкой, но один, что я думаю, что может помочь людям в будущем:

Мой узел был назван «english» и [DataSource sharedInstance] .languageSelected был «английский»

В принципе, вынос заключается в том, что узлы в Firebase чувствительны к регистру.

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