Userdefault는 사용자 기기내에 데이터를 Persistence하게 유지하기 위해서 사용하는 클래스이다. 싱글톤이기 때문에 어디서든 동기화된 데이터를 사용할 수도 있게 해준다.
let defaults = UserDefaults.standard
defaults 라는 변수를 통해서 유저의 데이터에 접근하거나 새로운 데이터를 저장할 수 있다.
데이터의 저장은 set 메서드를 사용한다. set메서드를 사용하여 User의 default preference에 데이터를 저장할 수 있다.
value에는 저장할 데이터가 오고, forKey에는 데이터의 이름이 온다. 데이터를 꺼내 사용할 때는 forKey에서 지정한 이름을 사용한다.
여러 데이터를 저장한 모습을 살펴보자.
defaults.set(0.24, forKey: "Volume") // 실수
defaults.set(true, forKey: "MusicOn") // boolean 값
defaults.set("Jaehoon", forKey: "PlayerName") // 문자열
defaults.set(Date(), forKey: "AppLastOpenedByUser") // Date(), 이때는 첫번째 파라미터의 타입이 Any?이다.
let array = [1, 2, 3] // collection 도 저장할 수 있다.
defaults.set(array, forKey: "myArray") // 배열
let dictionary = ["name": "Jaehoon So"]
defaults.set(dictionary, forKey: "myDictionary") // 사전
그리고 꺼내서 사용할 때는 다음과 같이 사용한다.
let volume = defaults.float(forKey: "Volume")
let appLastOpen = defaults.object(forKey: "AppLastOpenedByUser")
let myArray = defaults.array(forKey: "myArray") as! [Int]
let myDictionary = defaults.dictionary(forKey: "myDictionary") as! [String: String]
실수는 float메서드, 배열은 array, 사전은 dictionary 메서드를 사용한다. Any?타입으로 저장한 데이터는 object메서드를 사용하여 저장할 수 있다. 그리고 꺼내진 데이터는 Optional 이기 때문에 as! 키워드를 사용하여, 세번째 줄과 네번째 줄과 같이 데이터형을 직접 지정해 줄 수도 있다.
UserDefaults는 음악의 볼륨 값이나 간단한 글자 등 KB 단위의 데이터만 저장해야 한다. 앱이 실행되면서 UserDefaults 에 있는 데이터까지 함께 로드해야 되기 때문에, 용량이 큰 데이터를 저장하게 되면 시스템의 성능이 저하되기 때문이다.
그리고 UserDefault 로 저장한 데이터는 데이터베이스가 아닌 단순히 key-value형태로 저장된 데이터일뿐이다. 데이터베이스를 이용한 데이터 관리는 다른 방법을 사용한다.
'iOS > 데이터베이스 조작' 카테고리의 다른 글
Core Data 세팅, 동작 구조 (0) | 2022.01.29 |
---|---|
Persistent Data Storage (0) | 2022.01.29 |
Firebase를 이용한 앱개발2: 프로젝트에 Firebase추가하기 (0) | 2022.01.14 |
Firebase를 이용한 앱개발1: Segue설정 (0) | 2022.01.14 |
App icon을 만드는 방법 (0) | 2021.11.30 |