2016-04-28 10 views
0

Firebaseに格納されているすべてのオブジェクトを取得しようとしています。どのように先へ進むかわからない。私のコードとsnap.valueが次のように出力されます。私は文字列 "cbc"と "cp24"とdatasavedとurlの値を取得する必要があります。 "cbc"と "cp24"は保存時に入力した名前です。ここでFirebaseからデータを取り出す方法は?

Ref_UsersBase.observeEventType(.Value, withBlock: { snapshot in 

if let snapshots = snapshot.children.allObjects as? [FDataSnapshot] { 

      for snap in snapshots { 

       print(snap.value) 


      }    
     } 
    }) 

{ 

//印刷snap.valueさ:

{ 
"-KGOzXm1lLtyS23cOR-G" =  { 
    cp24 =   { 
     datesaved = "Apr 27, 2016"; 
     url = "https://www.google.ca/search?site=&source=hp&ei=H0chV6pfhKeOBJChpqAN&q=cp24+weather&oq=&gs_l=mobile-gws-hp.1.0.41l2.0.0.0.13343.1.1.0.1.1.0.368.368.3-1.1.0....0...1..64.mobile-gws-hp..0.1.6.2.JC6OI95nuYc"; 
    }; 
}; 
"-KGOznhRN0J2OVlIogZ0" =  { 
    cbc =   { 
     datesaved = "Apr 27, 2016"; 
     url = "http://www.cbc.ca/beta/news/canada/toronto"; 
    }; 
}; 

}

答えて

1

は、ここで私はそれがあなたの役に立てば幸い、私は似たような状況で行われてきたものです。

最初のレベル( "-KGOzXm1lLtyS23cOR-G")にキーを格納する最初の配列と、2番目のレベル( "cp24")にキーを格納する2番目の配列snapshot.valueを格納する変数を宣言します。

var receivedData = [String:[String:[String:String]]]() 
var firstKeyArray = [String]() 
var secondKeyArray = [String]() 

私は、snapshot.value全体をreceivedDataに格納します。

Ref_UsersBase.observeEventType(.Value, withBlock: { snapshot in 
    self.receivedData = snapshot.value  
}) 

firstKeyArrayとsecondKeyArray

var i = 0 

for(key,_) in receivedData{ 
    firstKeyArray.append(key) 
    for(key,_) in receivedData[firstKeyArray[i]]!{ 
     secondKeyArray.append(key) 
    } 
    i += 1 
} 

最後に、あなたがこの

print(receivedData[firstKeyArray[0]]![secondKeyArray[0]]!["datesaved"]!) 

//prints Apr 27 
+0

おかげで、男のようにdatesavedとURLの値にアクセスするを入力します。 firstKeyArrayのメソッドが機能します。 for(key、_)receivedData [firstKeyArray [i]] { secondKeyArray.append(key) }は機能しません。エラー: 'ArraySlice 'タイプのインデックスを持つ '[String:[String:[String:String]]]'の値をサブスクリプトできません。 – Mike

+0

申し訳ありませんが、私はいくつかの間違いがあり、私の答えを編集しました。 firebaseから取得し、 "datesaved"を正常に印刷したスナップショット。それがあなたのために働くかどうか私に教えてください。 – valencieu

+0

ありがとうございます。私はコーディングして修正したときの間違いに気付きます。私は同じエラーを持っています。 「cbc」と「cp24」は保存時に入力した名前なので、キーとして取得できないため、推測しています。遊び場で働くことは、実際のアプリで働くことを意味するものではありません。 – Mike

関連する問題