2016-09-28 91 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上使用“未解析的标识符”。我该怎么办? –