UserDefaults 클래스는
Key-Value 데이터로 사용자 설정 데이터를 저장하는 defaults 데이터베이스와 인터랙팅하는 인터페이스다.
defaults 시스템은 사용자의 프리퍼런스에 따라 앱을 커스터마이징 할 수 있도록 해준다.
안드로이드의 SharedPreference, Unity의 PlayerPrefs 등과 같은 개념이다.
UserDefaults는 항상 데이터베이스를 참조할 필요가 없도록 정보를 캐싱한다.
사용법
- 기본 객체 가져오기
UserDefaults.standard
- 데이터 저장하기
UserDefaults.standard.set(Any?, forKey: String)
UserDefaults.standard.set(Float, forKey: String)
UserDefaults.standard.set(Double, forKey: String)
UserDefaults.standard.set(URL?, forKey: String)
// and more
기본적으로 float, double, integer, Boolean, URL 타입을 지원하며,
반드시 NSData, NSString, NSNumber, NSDate, NSArray, NSDictionary 인스턴스여야 한다.
- 데이터 읽기
UserDefaults.standard.object(forKey: String)
UserDefaults.standard.url(forKey: String)
UserDefaults.standard.array(forKey: String)
UserDefaults.standard.dictionary(forKey: String)
UserDefaults.standard.string(forKey: String)
// and more
참고사항
a. 파일 경로를 저장할 땐 사용자가 파일을 옮길 경우를 대비하여
bookmarkData(options:includingResourceValuesForKeys:relativeTo:)를 사용해 생성한
NSURL 북마크 데이터를 대신 저장하고,
URLByResolvingBookmarkData:options:relativeToURL:bookmarkDataIsStale:error:를 사용해
저장된 북마크 데이터를 사용할 수 있다.
b. 특정 default 값이나 default 데이터베이스의 모든 업데이트에 대한 변경에 대해 observing 할 수 있다.
c. UserDefaults 클래스는 thread-safe 하다.
