2016-07-30 5 views
1

Ниже представлено firebase дерева данных enter image description hereПолучить данные firebase

Есть два родителя, и каждый из которых имеет два ребенка каждые. Как получить все данные для «пола».

Это мой код.

ref.child("Doctor").observeSingleEventOfType(.Value, withBlock: { (snapshot) in 
      if let result = snapshot.children.allObjects as? [FIRDataSnapshot] { 
       for child in result { 

        print("Here 1") 
        print(child) 
        let gender = child.value!["sex"] as? String 
        print("Here 2") 
        //print("Sex") 
        print(gender) 
       } 

      } else { 
       print("no results") 
      } 
     }) { (error) in 
      print(error.localizedDescription) 
     } 

Когда я распечатывающий пол, она показывает ноля значение.

+0

могли бы вы добавить, что вы получаете от 'печати (ребенка)' ? – adolfosrs

+0

Я получаю нулевое значение. –

+0

Я изо всех сил пытаюсь понять, почему вы получаете снимки вашего ребенка 'nil' здесь. Проблема, которую я вижу в вашем коде, заключается в том, что вы выполняете только итерацию в родительских узлах. Вам нужно будет повторить еще один уровень глубины, чтобы получить дочерние узлы, которые имеют информацию о сексе. Но имейте в виду, что ваша структура данных не является надежной и чистой вообще, я настоятельно рекомендую вам потратить время на реорганизацию. Я не знаю, почему у вас есть эти 2 уровня глубоких детей с ключами, но вы должны разделить их на две разные ветви в базе данных. – adolfosrs

ответ

1

Вы пытаетесь пропустить уровень в своем коде. Вы слушаете значение корневого узла, а затем перебираете его дочерние элементы. Это дает вам снимки узлов Msm... и eqn.... Если вы проверите внутри этих узлов, ни один из них не имеет дочернего свойства sex.

Чтобы решить эту проблему, добавьте еще один цикл в коде, чтобы попасть в идентификаторы кнопочных (ключи, начинающиеся с -K):

ref.child("Doctor").observeSingleEventOfType(.Value, withBlock: { (snapshot) in 
     if let result = snapshot.children.allObjects as? [FIRDataSnapshot] { 
      for child in result { 
       for child2 in child.children { 
        let gender = child2.value!["sex"] as? String 
        print(gender) 
       } 
      } 

     } else { 
      print("no results") 
     } 
    }) { (error) in 
     print(error.localizedDescription) 
    } 
+0

Я получаю ошибку в следующей строке result2 = result.childred.allObjects as? [FIRDataSnapshot] Ошибка: «Значение типа [FIRDataSnapshop] не имеет дочерних элементов" –

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