拥有此状态:
sealed interface BusStopsDBScreenUiState {
val message: StringResource?
data class Loading(override val message: StringResource? = null) : BusStopsDBScreenUiState
data class Error(override val message: StringResource? = null) : BusStopsDBScreenUiState
data class Success(val data: List<BusStop>, override val message: StringResource? = null) : BusStopsDBScreenUiState
}
还有这个检查:
if ((currentState is BusStopsDBScreenUiState.Success) || (currentState is BusStopsDBScreenUiState.Error))
_uiState.value = currentState.copy(message = null)
}
我在
copy
通话中收到此错误:
未解决的参考:复制
如果我删除
||
运算符并简单地使用 if (currentState is BusStopsDBScreenUiState.Success)
,那么复制就不会再出现该错误。
这怎么可能?怎么解决这个问题?
您只能在数据类上使用
copy
。
currentState
无法智能转换为任何特定数据类,因为它可能是 Success
或 Error
。所以它的类型是常见的超类型BusStopsDBScreenUiState
,这是一个接口而不是数据类,因此没有copy
函数。