2016-07-30 35 views
1

這裏是火力數據樹 enter image description here找回火力數據

有兩個家長和有兩個孩子每個。如何檢索「性」的所有數據。

這是我的代碼。

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

爲了解決這個問題,在你的代碼就可以進入推的ID添加一個循環(鍵開始-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]的值沒有成員'子女'」 –