Kotlin - Как установить ненулевое значение объекта равным нулю? - PullRequest
0 голосов
/ 30 января 2020

Получаю ответ в моем веб-сервисе, как показано ниже:

"data": [
        {
    myObject:{"key1":"keyValue1","key2":"keyValue2"}
}]

Теперь я должен сделать этот myObject нулевым. Я пытаюсь, как показано ниже:

if (mMailModel != null && mMailModel!!.myObject != null)
{
    mMailModel!!.myObject = null
}

Я должен сделать myObject нулевым.

Строка, сообщающая мне, что Нуль не может быть значением ненулевого типа

Я объявил об этом выше в действии, как показано ниже:

private var mMailModel: MainModel.Data?=null

Любое предложение?

РЕДАКТИРОВАТЬ

Моя модель класса, как показано ниже:

data class MainModel(
        @SerializedName("data")
        var data: ArrayList<Data>,
        @SerializedName("message")
        var message: String,
        @SerializedName("status")
        var status: Int
    ) {
        data class Data(
            @SerializedName("myObject")
            var myObject: MyObject)
            {
             data class MyObject(
                @SerializedName("key1")
                var key1: String,
                @SerializedName("key2")
                var key2: String,
             )
            }
       }

Ответы [ 2 ]

1 голос
/ 30 января 2020

Объявите свою модель следующим образом:

var myObject: MyObject? = ноль

data class MainModel(
        @SerializedName("data")
        var data: ArrayList<Data>,
        @SerializedName("message")
        var message: String = "",
        @SerializedName("status")
        var status: Int = 0
    ) {
        data class Data(
            @SerializedName("myObject")
            var myObject: MyObject? =null)
            {
             data class MyObject(
                @SerializedName("key1")
                var key1: String = "",
                @SerializedName("key2")
                var key2: String = "",
             )
            }
       }
1 голос
/ 30 января 2020

Пожалуйста, используйте ниже обновленный класс:

data class MainModel(
    @SerializedName("data")
    var data: ArrayList<Data>,
    @SerializedName("message")
    var message: String,
    @SerializedName("status")
    var status: Int
) {
    data class Data(
        @SerializedName("myObject")
        var myObject: MyObject?)//changed here
    {
        data class MyObject(
            @SerializedName("key1")
            var key1: String,
            @SerializedName("key2")
            var key2: String
            )
    }
}

Вы можете присвоить пустое значение myObject, как показано ниже

mMailModel?.myObject=null

Надеюсь, это поможет !!

...