Преобразовать карту в объект в Котлине - PullRequest
0 голосов
/ 03 мая 2018

Привет, ребята, у меня простой вопрос, У меня есть карта, полная элементов, и я хочу преобразовать ее в свой объект, позвольте мне показать вам некоторый код:

Вот мой объект:

class Bundle(map: Map<String, Any>) {
    var version: String?
    var app: String?
    var countries: ArrayList<Any>?
    var currency: ArrayList<Any>?
    var force: Boolean?
    var name: String?
    var service: ArrayList<Any>?
    var money: Int?

    init {
        version= null
        app= null
        countries= arrayListOf()
        currency= arrayListOf<Any>()
        force= true
        name = ""
        service= arrayListOf<Any>()
        money= 0
    }
}

И есть карта, которую я хочу конвертировать:

fun getBundle() {

    var db = FirebaseFirestore.getInstance()
    val docRef = db.collection("aa").document("bb")

    docRef.get().addOnCompleteListener { task ->
        if (task.isSuccessful) {
            val document = task.result
            if (document.exists()) {
                Log.d("Doc", "DocumentSnapshot data: " + document.data!!)
              // Here i want to take (document.data!!) and convert it to my Bundle class

            } else {
                Log.d("NO doc", "No such document")
            }
        } else {
            Log.d("ERROR", "get failed with ", task.exception)
        }
    }
}

Спасибо!

1 Ответ

0 голосов
/ 03 мая 2018

Хорошо, я нашел решение

Я преобразовал свой класс Bundle в класс данных:

data class Bundle(
    var version: String? = null,
    var app: String? = null,
    var countries: ArrayList<Any> = arrayListOf(),
    var currency: HashMap<String, Any> = hashMapOf(),
    var force: Boolean = false,
    var name: String? = null,
    var service: ArrayList<Any> = arrayListOf(),
    var money: Int = 0
)

А потом я просто добавил это в свой метод, где я хочу преобразовать мою Карту в свой объект Bundle:

val myObject = document.toObject(Bundle::class.java)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...