어플리케이션 설정을 저장하는데 쓰는 UserDefaults 객체.
State가 바뀔때마다 자동적으로 UI 를 갱신해주는게 SwiftUI 의 장점인데, State 로 UserDefaults 값을 사용하려면 약간의 전처리가 필요했다.
https://stackoverflow.com/questions/56822195/how-do-i-use-userdefaults-with-swiftui
ios 14 이상부터 지원하는 @AppStorage 프로퍼티 래퍼를 사용하면, UserDefaults 를 마치 SwiftUI State 처럼 사용할 수 있다.
@available(iOS 14.0, *) // iOS 14.0 이상의 모든 버전에서 사용가능
struct LoginCheck: View {
@AppStorage("isLoggedIn") var isLoggedIn : Bool = UserDefaults.standard.bool(forKey: "isLoggedIn")
var body: some View {
if isLoggedIn {
Button(action: {
self.isLoggedIn = false
}) {
Text("로그아웃")
}
} else {
Button(action: {
self.isLoggedIn = true
}) {
Text("로그인")
}
}
}
}
@State 바꾸듯 값을 바꾸면, @AppStorage 프로퍼티 래퍼가 UserDefaults의 바뀐 값을 처리해주고, 화면을 새로 갱신해준다.