# 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 프로토콜을 채택해야 한다.