Как проверить пустой или нулевой возврат при модернизации?

#android #kotlin #retrofit #retrofit2

Вопрос:

Я делаю логин, но я хотел бы проверить, чтобы что-то можно было сделать, когда пользователь не существует или пароль не совпадает. Но я всегда получаю «[]» в теле, и я не знаю, как установить это в «если».

Я пытался if(response) , if(response!=null) и даже больше, но ничего не получалось. Он всегда ловит это как «не ноль».

 var post: List<UserData>?

val response: Call<List<UserData>> = service.userLogin(email, pass)
response.enqueue(object : Callback<List<UserData>> {

    override fun onResponse(call: Call<List<UserData>>, response: Response<List<UserData>>) {
        post = response?.body()
        println(post)
 

Ответ №1:

Если вы уверены, что всегда получаете ответ «[]» в теле, это означает, что ответ не является нулевым, просто пустой массив, даже если пользователь не существует или пропуск неверен.

Что касается вашего кода, я немного изменился:

 override fun onResponse(call: Call<List<UserData>>, response: Response<List<UserData>>) {

                post = when (response.body().isNotEmpty()) {
                    true -> response.body()
                    false -> listOf<UserData>() // or null, because `post` is nullable
                }
                
                println(post)
            }
 

Существует 3 метода определения того, является ли список пустым/пустым
скриншот для демонстрации

Ответ №2:

     override fun onResponse(call: Call<List<UserData>>, response: Response<List<UserData>>) {
        if (response.body()?.isEmpty() == true) {
            println("Empty")
        } else {
            println("No empty")
        }
    }
 

С помощью комментария ниже я получил решение, спасибо.