# UserDefaults
iOS에서의 데이터 저장 공간 중 UserDefault
저장소가 있다. iOS 14 버전 이후 SwiftUI에서 UserDefault
사용이 간단해졌다. @AppStoarge
프로퍼티 래퍼만 사용하면 된다.
@AppStorage("number") private var number = 0
AppStorage
키워드에서 유추할 수 있듯 해당 프로퍼티 래퍼로 저장된 속성은 앱 전체에서 사용 가능하다.
아이패드에서 스플릿 뷰 기능이 지원되면서 Scene
이라는 개념이 생겼는데, AppStorage
로 저장되는 데이터는 앱 단에서의 변화이므로 씬에 상관없이 모두 동일하게 적용된다.
반면 @SceneStorage
의 경우 씬 단위로 데이터 관리가 가능하다. 씬 스토리지는 UserDefaults
에 데이터가 저장되는 것은 아니고 SwiftUI
에서 마련한 특정 공간에 저장된다.
사용하는 방법은 앱 스토리지와 동일하다.
@SceneStorage("number") private var number = 0
씬 단위로 데이터가 관리되며 전체 씬이 종료된 이후에는 이전에 저장하고 있던 씬 중 임의의 값으로 초기화된다.
스토리지에 저장 가능한 타입은 Int
, String
등의 원시타입 정도만 가능하며 커스텀 타입을 저장하려는 경우 RawRepresentable
프로토콜을 채택해야 한다.