SwiftUI 오류 유형
2021년 4월 27일 수정
≡ 목차 (Table of Contents)
이 글은 개인적으로 SwiftUI 코드를 사용하다 종종 겪은 오류 유형과 해결법을 정리한다.
self is immutable
여러가지 원인이 있을 수 있겠지만 여기서는 예를 들어 아래와 코드가 있다고 치자.
struct SomeView: View { var timer: Timer? = nil ... var body: some View { VStack { ... } .onAppear { timer = Timer(...) /* ! */ } } }
여기서 느낌표를 표기해 둔 코드 부분이 문제가 될 수 있다. 아래와 같은 오류가 발생한다.
Cannot assign to property: 'self' is immutable
오류로 파악해 보자면 View
자체는 immutable이라고 이해가 가능하다. 그래서 프로퍼티에 어사인하는 행위가 오류로 간주되나보다.
따라서 이 빌드 오류는 단순히 해당 프로퍼티를 State
처럼 변할 수 있는 상태로 만들어 주면 해결된다. 즉 위의 코드에서 timer
프로퍼티를 선언하는 부분을 아래처럼 바꿀 수 있다.
@State var timer: Timer? = nil
물론 프로퍼티로 쓰는 타입이 뭔지에 따라 ObservedObject
등 적절한 SwiftUI Property Wrappers를 사용해야 한다.