android-studio - 我无法弄清楚我的 Kotlin 代码中的问题?
问题描述
- 在
LoginViewModel
中,我无法弄清楚我应该在 "if (result is ....) 中写什么,因为我写的东西都是红色的。 - 在
LoginRepository
“when is ->”中变为红色。我不知道为什么? - 而且
LoginDataSource
我不知道如何解决代码。
我将不胜感激任何帮助。
登录视图模型:
fun login(username: String, password: String) {
// can be launched in a separate asynchronous job
val result: String = loginRepository.login(username, password).toString()
if (result is Success.data) {
_loginResult.value =
LoginResult(success = LoggedInUserView(displayName = "Login Success"))
} else {
_loginResult.value = LoginResult(error = R.string.login_failed)
}
}
登录存储库:
fun login(username: String, password: String) {
// handle login
val result = dataSource.login(username, password)
when (result) {
is -> Success(data = LoggedInUser(displayName = "Login Success"))
}
}
登录数据源:
fun login(username: String, password: String): Result.Success<LoggedInUser> {
try {
//TODO:handleloggedInUserauthentication
}
}
fun logout() {
// TODO: revoke authentication
}
解决方案
如果我正确理解
Success
类继承Result
类:val result = loginRepository.login(username, password) if (result is Success) { ... }
更改
login
LoginRepository 中函数的签名以返回Result
:fun login(username: String, password: String): Result.Success<LoggedInUser> { // ... return when (result) { is Success -> Success(data = LoggedInUser(displayName = "Login Success")) else -> Error() } }
- 在登录数据源中,向您使用的任何 API 发出请求,处理响应,根据响应创建和返回
Success
或对象。Error
推荐阅读
- ruby-on-rails - 使用单击时的时间戳更新 Rails 索引视图中的记录
- css - navbar-header 和 navbar-nav 没有对齐
- python - 为什么这些 Pandas groupby 的差异会导致 Nan?
- c# - MagickImage StackOverFlowException
- r - 使用 RecordLinkage 对连续存储的数据进行重复数据删除
- php - 自定义帖子类型简码不适用于 WordPress.com 安装
- excel - 关于如何让这个宏更快地完成这些步骤而不标记错误的任何建议?
- c# - C#:有没有办法从属性集中确定我们当前是否处于反序列化模式?
- assembly - 在ARM汇编语言中将位插入二进制数的方法
- c++ - 尝试交换可变参数模板类时如何正确重载 operator=?