Я пытаюсь использовать Firebase Firestore в проекте Kotlin. Все идет хорошо, за исключением случаев, когда я хочу создать экземпляр объекта с помощью DocumentSnapshot.toObject (Class valueType).
Вот код:
FirebaseFirestore .getInstance() .collection("myObjects") .addSnapshotListener(this, { querySnapshot: QuerySnapshot?, e: FirebaseFirestoreException? -> for (document in querySnapshot.documents) { val myObject = document.toObject(MyObject::class.java) Log.e(TAG,document.data.get("foo")) // Print : "foo" Log.e(TAG, myObject.foo) // Print : "" } } })
Как вы можете видеть, когда я использую documentChange.document.toObject(MyObject::class.java)
, мой объект documentChange.document.toObject(MyObject::class.java)
, но внутренние поля не заданы. Я знаю, что Firestore нуждается в модели, чтобы иметь пустой конструктор. Итак, вот модель:
class MyObject { var foo: String = "" constructor(){} }
Может кто-нибудь сказать мне, что я делаю неправильно?
спасибо
Вы забыли включить публичный конструктор с аргументами, или вы также можете просто использовать класс данных со значениями по умолчанию, этого должно быть достаточно:
data class MyObject(var foo: String = "")