使用 try/catch 改造获取数据

问题描述 投票:0回答:0

我的任务是从改造中获取客户列表。我尝试使用 List,但我想包含通用类 Result。这是在 Android 应用程序中。

这是我的api:

 @Headers("Content-Type: application/json")
 @GET("/clients")
 suspend fun getClientsData(): ClientResponse

客户回应:

    data class ClientResponse(
        val success: Boolean,
        val message: String
    )

RepositoryImp:

override suspend fun getClientsData(): Result<String> {
        return try {
            val clients = clientTrackerApi.getClientsData()
            if (clients.success){
                Result.Success( errorMessage = "Clients fetched")
            }
            else{
                Result.Error(errorMessage = clients.message)
            }
        }
        catch (e: Exception){
            Result.Error(errorMessage = e.message ?: "Problem")
        }
    }

通用结果类:

sealed class Result<T>(val data: T? = null, val errorMessage: String? = null) {
    class Success<T>(data: T? = null, errorMessage: String? = null) : Result<T>(data, errorMessage)
    class Error<T>(data: T? = null, errorMessage: String) : Result<T>(data, errorMessage)
    class Loading<T> : Result<T>()
}

如何返回具有 ID、姓名、年龄等的结果? 因为我想进一步将它映射到 ClientEntity 并将客户列表存储到数据库。

android kotlin generics retrofit
© www.soinside.com 2019 - 2024. All rights reserved.