2016-04-28 121 views
0

我想檢索存儲在Firebase中的每個對象。不知道如何繼續。以下是我的代碼和snap.value打印。我需要檢索String「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

下面是我在一個類似的情況做了,我希望它可以幫助你。

我聲明瞭一個變量來存儲snapshot.value,第一個數組用於存儲第一級別的密鑰(「-KGOzXm1lLtyS23cOR-G」),第二個數組用於存儲第二級別的密鑰(「cp24」)。

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和網址的價值,人。 firstKeyArray的方法工作。 for(key,_)in receivedData [firstKeyArray [i]] { secondKeyArray.append(key) }不起作用。錯誤:無法用類型爲'ArraySlice ' – Mike

+0

的索引爲類型'[String:[String:[String:String]]]'下標值:對不起,我犯了幾個錯誤並編輯了我的答案,我做了一個模擬遊樂場您從Firebase獲取的快照,併成功打印出「已保存日期」。請讓我知道這對你有沒有用。 – valencieu

+0

謝謝你。當我編碼並修改它時,我注意到這些錯誤。我得到了同樣的錯誤。我猜測是因爲「cbc」和「cp24」是我在保存時輸入的名稱,所以無法將其作爲關鍵字。有時在操場上工作並不意味着會在真正的應用程序中工作。 – Mike