swiftUI를 조금씩 공부하면서 키워드를 하나씩 정리해 나가고 있다.
오늘은 @AppStorage에 대해서 알아보겠다.
(공식문서 내용)
A property wrapper type that reflects a value from UserDefaults and invalidates a view on a change in value in that user default.
@AppStorage는 간단히 말해 다음과 같이 말할 수 있다.
- UserDefault의 SwfitUI버전
- App의 전역범위에 데이터 공유 가능
- Binding으로 서브뷰로 전달하여 데이터를 바로 업데이트 가능
사용 방법
@AppStorage("KEY") var Name: Type = Value
@AppStorage 뒤에는 "고유 값"을 적어주면 된다.
언제 쓸 수 있을까?
(유데미 강의에서 공부했던 코드를 가져왔다)
struct ContentView: View {
@AppStorage("onboarding") var isOnboarindViewActive: Bool = true
var body: some View {
ZStack {
if isOnboarindViewActive {
OnboardingView()
}
else {
HomeView()
}
}
}
}
struct OnboardingView: View {
//MARK: - PROPERTIES
@AppStorage("onboarding") var isOnboardingViewActive : Bool = true
...
struct HomeView: View {
//MARK: - PROPERTIES
@AppStorage("onboarding") var isOnboardingViewActive : Bool = false
...
ContentView에서 @AppStorage를 bool 타입으로 정의하였고
OnboardingView는 true 값을
HomeView는 false 값을 각각 가지고 있다.
앞서 말한 것처럼 @AppStorage는 데이터를 유지하는 속성을 가지고 있다.
따라서 HomeView에서 앱을 종료하고 다시 실행하면 HomeView가 나타나게 된다.
마지막으로
Important: @AppStorage writes your data to UserDefaults, which is not secure storage.
As a result, you should not save any personal data using @AppStorage, because it’s relatively easy to extract.
@AppStorage는 데이터 추출이 쉽게 때문에 개인 데이터를 저장하면 안된다고 설명하고 있다.
참고
https://velog.io/@kipsong/Today-I-learned-SwiftUI-AppStorage
https://www.hackingwithswift.com/quick-start/swiftui/what-is-the-appstorage-property-wrapper
'SwiftUI' 카테고리의 다른 글
SwiftUI @Binding 알아보기 (0) | 2022.10.23 |
---|---|
SwiftUI FocusState 알아보기 (0) | 2022.07.26 |
SwiftUI ForEach (0) | 2022.07.25 |
SwiftUI animations(애니메이션) (0) | 2022.07.21 |
SwiftUI LifeCycle (0) | 2022.07.21 |