[SwiftUI] @State 속성 초기값 강제 설정
- 언어/스위프트 UI
- 2024. 5. 31.
반응형
SwiftUI 에서 많이 사용되는 @State는 보통 내부에서 사용하기 떄문에 초기값을 할당하고 작업하는 경우가 많습니다. 하지만 외부에서 주입해서 사용할 경우 일반 문자열을 대입하면 에러가 발생합니다. 스위프트UI 에서 @State 값을 동적으로 할당하는 방법을 알아보겠습니다.
다음 코드를 작성해서 초기값을 설정하려면 다음과 같은 에러가 발생합니다.
struct PasscodeView: View {
@State private var passcode: String
init(code: String) {
self.passcode = code
}
}
Error: Cannot assign value of type 'String' to type 'State<String>'
"String 문자열을 State 타입에 할당 할 수 없다" 라는 에러가 발생하는 원인은 초기값에 맞지 않는 값을 할당 하기 때문입니다.
위의 코드에서 passcode는 String 으로 선언했지만 @State가 붙어서 더이상 평범한 문자열이 아닙니다. 저도 @State를 외부에서 주입 해야 할 때 어떻게 초기화 해야 하는 줄 몰라서 당황했는데 웹에도 별도의 글이 많지 않았습니다. 이유인 즉 너무 당연한 것이기 때문이죠. State<String> 타입에 String을 대입하는게 말이 되지 않습니다. 에러문구만 잘 읽어봐도 해결될 문제입니다
다음은 문제를 해결한 초기화 함수입니다.
struct PasscodeView: View {
@State private var passcode: String
init(code: String) {
_passcode = .init(initialValue: code)
}
}
반응형
'언어 > 스위프트 UI' 카테고리의 다른 글
[SwiftData] SwiftUI 프리뷰(Preview) 안될 때 처리방법 (0) | 2024.04.04 |
---|---|
[SwiftUI] 스위프트 UI가 Struct를 사용하는 이유 (0) | 2024.02.24 |
[SwiftUI] 버튼 활성 / 비활성 처리하기 (0) | 2024.02.22 |
[SwiftUI] ScrollView 중앙에 위치 시키기 (0) | 2024.02.16 |
[SwiftUI] ScrollView 스크롤 오프셋 값 PreferenceKey 통해서 가져오기 (0) | 2024.02.15 |