2016-09-28 2 views
0

私はSwift iOSアプリケーションにFirebaseを使用しています。私はFirebaseチュートリアルを試しましたが、私にとってはまだ運がありません。私は/topics子供のトピックの名前から配列を作る必要があります。子ノードから配列を作成するには?

私Firebaseデータは次のようになります。

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で "未解決の識別子の使用"とまったく同じことを書きます。私は何をすべきか? –

関連する問題