[안드로이드 공부]/Compose

Unresolved reference: copy

코코모모 2024. 5. 27. 15:55

아래는 코모스튜디오가 직접 만든 무료 앱이에요
(한 번만 봐주세요 ^^)

01

02

03

정각알림 만들기(말하는시계)

말하는 시계 (취침, 자전거) 

말하는 타이머 음성 스톱워치 

_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 함수를 호출하려는 오류를 방지할 수 있습니다.

모든 게시물은 코모스튜디오의 소유이며, 무단 복제 수정은 절대 불가입니다.
퍼가실 경우 댓글과 블로그 주소를 남기고 해당 게시물에 출처를 명확히 밝히세요.