아래는 코모스튜디오가 직접 만든 무료 앱이에요(한 번만 봐주세요 ^^)
_uiState.update { state ->
when (state) {
is UiState.Success -> {
UiState.Success(
data = state.data.copy(
newlyAddedId = event.addedId
)
)
}
else -> state
}
}
이 코드에서 발생하는 오류는 UiState.Success의 data 필드가 UiData<ClassificationItem> 타입이지만, copy 함수를 호출하려고 하고 있습니다. UiData는 인터페이스이므로 copy 함수가 없습니다. copy 함수는 코틀린의 data 클래스에서만 사용할 수 있습니다. 따라서, 이 문제를 해결하려면 UiData를 구현하는 구체적인 클래스를 사용해야 합니다. 예를 들어, ClassificationData 클래스를 사용하면 다음과 같이 코드를 수정할 수 있습니다:
is UiState.Success -> {
val data = state.data
if (data is ClassificationData) {
UiState.Success(
data = data.copy(
newlyAddedId = event.addedId
)
)
} else {
state
}
}
이 코드는 state.data가 ClassificationData 인스턴스인 경우에만 copy 함수를 호출합니다. 그렇지 않은 경우에는 원래의 state를 반환합니다. 이렇게 하면 copy 함수가 없는 UiData 인스턴스에 대해 copy 함수를 호출하려는 오류를 방지할 수 있습니다.
' [안드로이드 공부] > Compose' 카테고리의 다른 글
Scaffold Content()에 LazyColum 문제 (0) | 2024.06.28 |
---|---|
Incompatible types: UiState.Loading and State<UiState<UiData<Any>>> (0) | 2024.05.26 |
Scafford에서 bottomBar, topBar 안보이게 하기 (0) | 2024.04.26 |
Scaffold에 Shape 적용하기 (0) | 2024.04.22 |
Caused by: java.lang.IllegalArgumentException: MaterialThemeUsingMdcTheme requires the host context's theme to extend Theme.MaterialComponents (0) | 2023.07.21 |
모든 게시물은 코모스튜디오의 소유이며, 무단 복제 수정은 절대 불가입니다. |
퍼가실 경우 댓글과 블로그 주소를 남기고 해당 게시물에 출처를 명확히 밝히세요. |