2017-07-28 106 views
1

我創建了JSON數據庫樹,我可以使用這些代碼讀取特定值。我可以看到表視圖「阿爾伯特·愛因斯坦」獲取Firebase列中的所有數據

ref.child("Personel").child("Name").observeSingleEvent(of: .value, with: { (snapshot) in 

      if let item = snapshot.value as? String{ 

       self.myList.append(item) 
       self.LessonsTableView.reloadData() 
      } 

     }) 

https://i.hizliresim.com/JlNEbj.png

不過,我想看看在個人專欄哪些類別?與此類似,

https://i.hizliresim.com/9dApPO.png

有沒有什麼辦法讓或瞭解其列在「個人」

表視圖輸出必須 - >年齡,姓名,照片

+0

有幾件事:Firebase中沒有列,只有父母和孩子對應的鍵和值。您正在問父節點*中存在哪些*子鍵。 (在你的例子中的鍵是年齡,名字和照片)。你可能想更新你的問題,所以它更清楚一點。這也是一個很好的問題。將來,請將您的Firebase結構包含爲文本,無圖片。這樣,如果在答案中使用它,我們不必重新輸入。 – Jay

回答

0

如果循環通過snapshot.value你應該能夠從數據庫中獲得key

在JavaScript它會是這樣的:

ref.child("Personel").child("Name").observeSingleEvent(of: .value, with: { (snapshot) in 

    if let item = snapshot.value as? String{ 

     self.myList.append(item) 
     self.LessonsTableView.reloadData() 
    } 

    var vals = snapshot.val(); 
    for(var property in vals) { 
     console.log(property); // property has those values in it 
    } 

}) 
+0

該代碼將值附加到數組--OP需要快照中的KEYS,而不是值。 – Jay

+0

它確實返回KEYS – Levi

+0

如何? Snapshot.value返回快照中包含的*值*,而不是密鑰。在這個答案中,該值被附加到myList數組中。但是,請注意您的答案中使用的是「名稱」鍵,而OP不知道該鍵,因此也不起作用。 – Jay

0

這是一種方式:

ref.child("Personel").observeSingleEvent(of: .value, with: { (snapshot) in 
    self.myList.append(snapshot.childSnapshot(forPath: "Age").value) 
    self.myList.append(snapshot.childSnapshot(forPath: "Name").value) 
    self.myList.append(snapshot.childSnapshot(forPath: "Photo").value) 
    self.LessonsTableView.reloadData() 
}) 
+0

這隻適用於鑰匙已知的情況 - 他希望得到實際的鑰匙,而不是價值;-) – Jay

+0

啊......那需要一個循環。我不想查找演員所需的咒語。但我看到你已經在你的答案中做到了。 :-D –

1

您可以通過快照進行迭代,得到它的孩子,然後將這些兒童鍵

假設您與用戶有一個用戶節點

users 
    user_0 
    fav_game: "WoW" 
    name: "Leroy" 

然後讓名字的鑰匙:和fav_game:

let userRef = self.ref.child("users").child("user_0") 
userRef.observeSingleEvent(of: .value, with: { snapshot in 
    for child in snapshot.children { 
     let snap = child as! DataSnapshot 
     let key = snap.key 
     print(key) 
    } 
}) 

打印

fav_game 
name 

一個重要的注意是

for child in snapshot.children 

,因爲這將保持數據(在此按鍵情況)。如果快照被轉儲到字典中,它會失去命令。

相關問題