Почему мой класс данных дает нулевые значения, если я не применил к нему значение по умолчанию? - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь показать данные с сервера, используя класс данных kotlin. Это почти нормально работает, но в некоторых случаях, когда я получаю ответ, я не знаю, почему он по-прежнему дает нулевые значения, если я не добавлю значение по умолчанию ("") для сообщения.

  1. Это мой класс данных

    data class ViewcardModel(
            val msg: String = "",  // here is default values
            val cartcnt: String = "",
            val order_total: Int = 0,
            val status: Boolean = false          
    )
    
  2. Это мой ответ с сервера

    {
      status = false  // server response
    }
    

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Вы должны передать значение в класс данных следующим образом

  val s= ViewcardModel(status=false)
  println(s.toString())
  val s1= ViewcardModel(msg="hello",status=false)
  println(s1.toString())

выход

ViewcardModel(msg=, cartcnt=, order_total=0, status=false)
ViewcardModel(msg=hello, cartcnt=, order_total=0, status=false)
0 голосов
/ 05 сентября 2018

Вероятно, вы используете что-то вроде GSON для создания экземпляров вашей модели. Эти инструменты используют отражение для создания экземпляров, и поэтому значение параметра по умолчанию вашего основного конструктора никогда не вступит в силу (поскольку оно никогда не вызывается).

Вам нужно то же, что и этот вопрос:

Установка значения по умолчанию для переменной при десериализации с использованием gson

Пользовательский десериализатор - это, вероятно, то, что вы в итоге получите.

...