2016-09-28 96 views
0

我爲我的Swift iOS應用程序使用Firebase。我嘗試了Firebase教程,但對我來說仍然沒有運氣。我需要從我的/topics子主題的名稱中創建一個數組。如何從子節點創建數組?

我的火力地堡的數據是這樣的:

topics 
    Topic 1 
    Entry 1 
     point: 1 
     user: user1 
    Entry 2 
     point: 2 
     user: user2 

我需要一個陣列,其中包括[Topic 1Topic 2,...]。我怎樣才能使這個陣列發生?也許我以不正確的方式嵌套數據?任何幫助,將不勝感激。

我也嘗試檢索數據,但snapshot<< error type >>的一種,所以我不能從中獲得任何價值?可能是什麼問題?

let ref = FIRDatabase.database().reference().child("topics") 

    ref.observeEventType(.Value) { (snapshot) in 

     print(snapshot) 

    } 
+0

我想你可能需要調整你的數據樹。但是,你可以檢索所有的主題(這將拉下他們的子節點),然後在你的應用程序中,只訪問主題,然後添加到數組或類似的東西 – Rexford

+0

@Rexford你有什麼想法我應該如何構造我的數據?我想你會了解這個應用程序的概念,有些話題和人們正在爲它們寫入條目。每個條目都有2個屬性在我的示例中建議。 –

+0

您是否需要一個包含主題爲字符串或映射對象的數組? –

回答

1

轉換快照值的鍵到一個數組:

refHandle = postRef.observe(FIRDataEventType.value, with: { (snapshot) in 
    let topicsDict = snapshot.value as! [String : AnyObject] 
    topicsArray = Array(topicsDict.keys) 
}) 
+0

我不明白的是refHandle是什麼,我需要在之前創建一個變量作爲refHandle嗎? –

+0

當它不應該觸發塊時,這將用於註銷觀察者。請參閱該文檔:https://firebase.google.com/docs/reference/ios/firebasedatabase/interface_f_i_r_database_reference.html#a92d618b443c649ba9f8c9d938a478c99 返回 用於註銷此塊句柄後使用'removeObserverWithHandle:' –

+0

它使假如一個錯誤我寫下和你一樣的東西:在refHandle上使用「未解析的標識符」。我該怎麼辦? –