#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")
}
}
С помощью комментария ниже я получил решение, спасибо.