SwiftUI 에서 UserDefaults 를 쉽게 써보자: @AppStorage

버들비·2020년 11월 23일
0

SwiftUI

목록 보기
8/8

어플리케이션 설정을 저장하는데 쓰는 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의 바뀐 값을 처리해주고, 화면을 새로 갱신해준다.

0개의 댓글