Firebase извлекает данные как Kotlin тип данных Any - PullRequest
0 голосов
/ 09 марта 2020

Я пытаюсь получить весь узел за один снимок из базы данных Firebase Real-time как тип Any. Код, который я использую, выглядит следующим образом:

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

Данные получаются идеально, когда возвращается журнал:

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

Однако я не могу получить отдельные данные, такие как предложение Тип и др. c здесь. Кто-нибудь может мне помочь?

PS Я могу получить каждый из данных отдельно от Firebase. Но я пытаюсь избежать этого и вместо этого получить весь узел за один выстрел.

Ответы [ 2 ]

1 голос
/ 09 марта 2020

Поддерживаемые Firebase типы данных

Скорее всего, ваш объект возвращается как Map<String, Object> объект. Возможно, используйте карту, поскольку вы можете читать / писать ее лучше, чем любой объект

1 голос
/ 09 марта 2020

Когда вы используете следующую строку кода:

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

Тип объекта: Any и нет t Offer, поэтому вы можете получить доступ к его свойствам. , Когда вы используете:

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

Вы просто печатаете в logcat строковое представление вашего offerDetails объекта. Если вам нужен доступ к его свойствам, вам следует привести этот объект к объекту типа 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)

Тот же вывод (90) в logcat.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...