有这个 uistate:
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
功能。当您仅测试单个数据类类型(fe
Success
,不使用||
)时,情况会发生变化,然后编译器可以智能转换currentState
为该类型,即数据类。然后您可以使用copy
。