[Apple 공식자료]
UserDefaults를 간단하게 설명하면 iOS앱에서 데이터를 저장하고 사용되는 기본적인 저장소입니다.
그렇기 때문에 앱이 종료하고 다시 실행해도 UserDefaults에 저장된 데이터는 여전히 유지됩니다.
UserDefaults 란?
UserDefault는 iOS 앱에서 간단한 정보를 저장하고 관리하는 데 사용되는 데이터 저장소입니다.
앱 내부의 데이터베이스와 비교할 수 없을 정도로 단순하여 사용자 설정, 사용자 정보 등의 간단한 정보를 저장하고 관리하는데 사용됩니다.
iOS에서 지원하는 특별한 데이터베이스로 key-value 쌍으로 이루어져 있습니다. 즉, 값을 저장하거나 불러올 때 해당 값을 식별하는 key가 필요하고 key를 사용하여 저장된 값을 가져올 수 있습니다. (key는 문자열 형태로 지정되며, 중복될 수 없다.)
UserDefault 사용법
UserDefault를 사용하려면 먼저 UserDefaults
객체를 가져와야 합니다. 이를 위해서 UserDefaults.standard
를 호출 합니다. 이렇게 가져온 UserDefaults
객체를 사용하여 값을 저장하고 불러올 수 있습니다.
아래는 UserDefault를 사용하는 간단한 예시입니다.
// 값을 저장합니다.
let userDefaults = UserDefaults.standard
userDefaults.set("Jamong", forKey: "username")
userDefaults.set(25, forKey: "age")
// 값을 가져옵니다.
let name = userDefaults.string(forKey: "username")
let age = userDefaults.string(forKey: "age")
위 코드에서 UserDefaults.standard
는 UserDefault 객체를 반환하는 싱글톤 객체입니다.
※ 싱글톤 객체 : 앱 내에서 오직 하나의 인스턴스만 생성되고, 이를 전역적으로 접근하여 사용할 수 있는 객체를 의미합니다.
set(_, forKey:)
메서드는 특정 key에 값을 저장하는 데 사용됩니다. value(forKey:)
메서드는 해당 key에 저장된 값을 반환합니다.
UserDefault 데이터 타입
UserDefault는 다양한 데이터 타입을 지원합니다. set(_, forKey:)
메서드를 사용할 때에는 저장하려는 값을 Any
타입으로 전달하면 됩니다. 하지만 Value(forKey:)
메서드로 값을 가져올 때에는 반환되는 값이 옵셔널 타입이기 때문에, 해당 값을 가져올 때 옵셔널 바인딩을 사용해야 합니다.
UserDefault에서 지원하는 데이터 타입은 다음과 같습니다.
- Bool
- Integer(Int, UInt, ...)
- Float, Double
- String
- URL
- Data
UserDefault 주의사항
UserDefault는 단순한 데이터베이스이기 때문에 앱 내부의 중요한 정보를 저장하기에는 적합하지 않습니다.
따라서 UserDefault를 사용할 때는 다음과 같은 주의사항을 염두에 두어야 합니다.
- 간단한 설정, 사용자 정보와 같이 중요하지 않은 정보만 저장합니다.
- 너무 많은 데이터를 저장하지 않습니다.
- 앱의 시작 시점에 UserDefault를 불러오는 것보다는 필요한 시점에만 불러옵니다.
- UserDefault에 저장한 정보는 사용하지 않을 때 삭제합니다.
마무리
UserDefault는 iOS 앱에서 간단한 정보를 저장하고 관리하는 데 사용되는 데이터 저장소로 값을 저장 할 때는 key-value 쌍으로 저장되며, 다양한 데이터 타입을 지원합니다. 하지만 중요한 정보를 저장하는 데에는 적합하지 않으며, 사용할 때는 주의사항을 염두해 두어야 합니다.