본문 바로가기

SwiftUI

SwiftUI @AppStorage

반응형

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

 

Today, I learned: SwiftUI @AppStorage

오늘은 SwiftUI에서 UserDefault인 @AppeStorage에 대해서 알아보겠습니다. 우리가 SwiftUI로 앱을 구성하다보면, 앱 프로젝트 전체범위에서 접근 가능한 데이터가 필요할 때가 있죠. 예를들면, 다음과 같

velog.io

https://www.hackingwithswift.com/quick-start/swiftui/what-is-the-appstorage-property-wrapper

 

What is the @AppStorage property wrapper? - a free SwiftUI by Example tutorial

Was this page useful? Let us know! 1 2 3 4 5

www.hackingwithswift.com

 

반응형

'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