簡體   English   中英

Firebase 獲取數據為 Kotlin 數據類型 Any

[英]Firebase fetching data as Kotlin data type Any

我試圖從 Firebase 實時數據庫中一次性獲取整個節點,類型為Any 我使用的代碼如下:

val offerDetails = p0.child(querykey).child("Offers").child(offerkey).getValue(Any::class.java)
Log.d("MyMessage", 
offerDetails.toString())

當 Log 返回時,數據完美地獲得:

{offer=90, ****ID=********, deliveryHour=0, mobile=******, type=2, deliveryMinute=15, offerComment=******}

但是,我無法在此處獲取單個數據,例如報價、類型等。 有人可以幫我嗎?

PS 我可以從 Firebase 單獨獲取每個數據點。 但我試圖避免這種情況,而是一次性獲得整個節點。

當您使用以下代碼行時:

val offerDetails = p0.child(querykey).child("Offers").child(offerkey).getValue(Any::class.java)

對象的類型是Any不是t Offer ,因此您可以訪問其屬性。 當您使用:

Log.d("MyMessage", offerDetails.toString())

您只是在 logcat 中打印您的offerDetails對象的 String 表示形式。 如果您需要訪問它的屬性,那么您應該將該對象強制轉換為Offer類型的對象。

Log.d("MyMessage", (offerDetails as Offer).offer)

通過這種方式,您告訴編譯器該對象的類型為Offer而不是Any 在這種情況下,logcat 中的輸出將是:

90

編輯:

您還可以使用以下代碼行訪問屬性:

val offer = p0.child(querykey).child("Offers").child(offerkey).child("offer").getValue(String::class.java)
Log.d("MyMessage", offer)

logcat 中的相同輸出 ( 90 )。

Firebase 支持的數據類型

您的對象很可能作為Map<String, Object>對象返回。 也許使用地圖,因為您可以比 Any 對象更好地讀/寫它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM