공부하며 작성한 자료로, 덧붙일 점이나 사실과 다른 점이 있다면 언제든 좋은 지적 부탁드립니다.
UserDefaults란?
“앱을 실행하는 동안 지속적으로 Key-Value 쌍을 저장하는 데이터베이스 인터페이스” -Apple
(그러나 우리가 알고있는 DataBase처럼 활용하긴 어렵습니다.)
보통 앱을 시작할 때 기본상태정보를 저장하기 위해 사용하고, 싱글톤객체를 사용합니다.
앱이 실행될 때 앱에서 저장한 모든 UserDefaults 데이터가 메모리에 올라갑니다.
(여기에 많은 데이터를 사용하면 메모리 누수의 원인!!)
그러므로
간단한 볼륨, 마지막으로 설정한 앱 환경설정 등 아주 간단한 것을 저장할때만 사용하는 것이 좋습니다.
Apple 공식문서
https://developer.apple.com/documentation/foundation/userdefaults
0. 여기서 사용할 데이터모델 구조 (TodoModel)
// 데이터 구조
struct TodoModel: Codable {
let title: String
var isDone: Bool
}
1. UserDefaults 선언하기
let defaults = UserDefaults.standard
// 어디서 생성하든지 공통으로 사용할수 있는 객체입니다. (Singleton 객체)
// ViewController1에서 저장한 데이터를 ViewController2에서도 사용가능합니다.
2. 데이터 저장하기
let myArray: [String] = ["This is myArray", "is Good?"]
defaults.set(items, forKey: "myArray")
// key에는 이것을 지칭할 수 있는 key를 입력합니다. 편의상 직관적으로 myArray로 셋업했습니다.
3. 데이터 불러오기
let loadedData = defaults.value(forKey: "myArray")
// 저장할 때 설정한 key와 일치하는 데이터를 불러옵니다.
myArray = loadedData as! [String]
// 데이터는 Any 유형이기 때문에 저장했던 프로퍼티의 데이터 유형으로
// 다운캐스팅해주세요. myArray의 유형은 [String] 이었습니다.
조금 더 알아보기
2-1. UserDefaults 로 저장할 수 있는 유형
url? Any?, Bool, Double, Float, Int
위 유형들을 Key-Value 타입(Dictionary)으로 저장합니다.
2-2. UserDefaults 를 사용할 때는 언제일까요?
아주 간단하고 작은 데이터를 저장할 때 사용합니다.
유저가 앱에서 설정한 아주 간단한 환경설정들 정도로 하면 됩니다.
예를 들어 볼륨, 노래를 어디까지 들었는지, 테마는 어떤 테마였는지 아주 간단한 것들이요.
앱을 한번 실행할 때 모든 UserDefaults 데이터가 메모리에 올라가기 때문에
데이터가 많다면 앱이 아주 무거워질 수 있습니다.
반응형
'개발 > Swift' 카테고리의 다른 글
[Swift] Storyboard 없이 앱 만들기 (UIKit) (0) | 2022.08.03 |
---|---|
[Swift] NS Coder로 간단한 Data 저장하기 (Data CRUD - 2) (0) | 2022.07.14 |
[Swift] 타이머 생성하기 (0) | 2022.07.12 |
[Swift] TableView Header 만들기 (0) | 2022.07.06 |
[Swift] 제곱 쉽게 구하기 (pow) (0) | 2022.07.05 |