반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Xcode
- Operater
- graphql
- SwiftUI
- @State
- swift6
- operator
- @Binding
- typeorm
- RxCocoa
- Operators
- init?
- @EnvironmentObject
- vim
- IOS
- RFC1738/1808
- NavigationLink
- RxSwift
- Creating Operators
- ios14
- nestjs
- Bug
- @Environment
- subject
- init
- SWIFT
- NullObject
- URL(string:)
- dismiss
- nonisolated
Archives
- Today
- Total
Tunko Development Diary
SwiftUI) @State 란? 본문
SwiftUI의 View는 구조체로 구현되어있습니다. value Type인 View 내부에선 var로 선언되더라도 프로퍼티 값을 바꿀 수 없습니다.
구조체는 값 유형이기 때문에 일반적으로 허용되지 않습니다.
에러 메시지
Left side of mutating operator isn't mutable: 'self' is immutable
하지만,
SwiftUI에서는 @State 속성래퍼를 사용하여 구조체 내부의 값을 수정할 수 있도록 합니다.
@State var age : Int = 0
이렇게만 선언하면 age 값을 SwiftUI가 관리하는 공유 스토리지로 이동됩니다. 공유 스토리지로 이동된 age 값은 SwiftUI가 저장하고 가지고있게 됩니다.
SwiftUI에서는 데이터를 기반으로 뷰를 매번 다시 그리게 됩니다. 이때 해당 데이터를 잃지 않고 사용할 수 있습니다.
Apple에선 로컬 특성을 다시 적용하기 위해서 private를 사용해 속성을 표시할것을 권장합니다.
struct TestView: View {
@State private var age : Int = 0
var body: some View {
VStack {
Text(\\(age))
Button {
age += 1
} label: {
Text("age add Button👍")
}
}
}
}
반응형
'Development > SwiftUI' 카테고리의 다른 글
SwiftUI)@Environment 와 @EnvironmentObject (0) | 2022.09.29 |
---|---|
SwiftUI) @State와 @Binding 란? (0) | 2022.09.28 |
SwiftUI) property wrappers 종류 (2) | 2022.09.26 |
SwiftUI) 실전형 TextField 사용하기 예제 [@FocusState, ScrollView movemunt] (3) | 2022.09.23 |
SwiftUI) VideoPlayer navigationBarHidden not working [🐛] (0) | 2022.09.21 |
Comments