2017-02-13 12 views
0

親と多くの異なる子を持つFirebaseデータベースを設定しました。私は子供のキーのすべてをコード内の他の場所にアクセスできる配列に保存しようとしています。Firebaseデータベースの子を配列に格納する

// Used to get the children 
rootRef.child(partyName).observe(.childAdded, with: { (snapshot) in 
    var newItems = [FIRDataSnapshot]() 

    for item in snapshot.children { 
     newItems.append(item as! FIRDataSnapshot) 

    } 

    if let snapDict = snapshot.value as? [String:AnyObject]{ 

     for each in snapDict{ 
      let keyID = each.key 

      saves.append(keyID) 
     } 
    } 

}) 

残念ながら、私がオンラインで見つけたほとんどの「解決策」は、取得したデータを印刷するか、テーブルビューに追加するだけです。私は、すべての子供を後でアクセスできる配列に保存するだけです。これは可能ですか?もしそうなら、どうすればいいのですか?

おかげ

+2

再度値を再取得することは意味がありません。キーと値を格納する辞書を使用します。それは配列の形式でキーを取得するためにkeysプロパティを呼び出すことができます。 –

+1

私はこの問題が何であるか分かりません。配列のキーを取得できませんか?あなたの質問をJSONツリーで更新する – Dravidian

答えて

0

取得したデータを格納する適切な方法は、NSDictionaryまたはスウィフトDictionaryにキーと値のペアを格納することです。 Sachin Vasが言っていたように、キーだけを保存するのは意味がありません。なぜなら、値との関係がないからです。

あなたの質問に答えるには、あなたの質問にあなたが提供したコードがあなたが求めていることをします。 savesがあるクラスのグローバル配列または静的配列の場合、アプリケーション全体でグローバルにアクセスでき、取得されたすべてのキーが含まれます。

savesDictionaryであることを除いて、取得したデータを保存する正しい方法はまったく同じです。

rootRef.child(partyName).observe(.childAdded, with: { (snapshot) in 

    if let snapDict = snapshot.value as? [String:AnyObject] { 
     saves = snapDict // where saves is declared as Dictionary<String, AnyObject> 
    } 

}) 
関連する問題