요약
Userdefaults를 통해 데이터를 저장할 경우 특정 ".plist" 파일에 데이터를 저장하게 됩니다. (보통 앱의 Library 폴더 안 Preferences 디렉토리에 위치). 이때 plist는 키-값 형식의 XML 형식이기에 1차원적으로 저장됩니다. 기본적으로 단순한 데이터 타입(예: String, Int, Bool 등)을 저장하기 위한 구조라고 볼 수 있습니다. 물론 데이터를 하나하나 키밸류 쌍으로 주먹구구식으로 넣을 수 있지만 이는 객체지향 프로그래밍을 하는 클라쪽과 맞지않고 불필요한 공간 또한 차지하게 됩니다. 서로 연관있는 커스텀 객체에 Codable을 채택하면 Data 타입으로 Userdefaults에 저장할 수 있게되어 데이터를 객체지향적으로 관리할 수 있습니다.
부가 설명
UserDefaults에서 저장되는 값의 타입은 기본적으로 property list(plist) 이다. plist에는 NSData, NSString, NSNumber, NSDate, NSArray, or NSDictionary를 넣을 수 있다. 객체지향 프로그래밍으로 데이터를 저장하기 위해 Codable을 통해 NSData 형식으로 넣어준다. Codable은 데이터를 표현 형식(주로 JSON)과 Swift 데이터 타입 사이에서 변환하는 데 초점을 맞추어 데이터의 직렬화와 역직렬화에 관여한다.
// Codable 프로토콜을 채택했을 경우
//struct를 통한 데이터 관리
struct ToDoItem: Codable {
let title: String
}
var toDoItems = TodDoItem()
// Encoding
if let encodedData = try? JSONEncoder().encode(toDoItems) {
UserDefaults.standard.set(encodedData, forKey: "toDoItems")
}
// Decoding
if let savedData = UserDefaults.standard.data(forKey: "toDoItems"),
let decodedItems = try? JSONDecoder().decode([ToDoItem].self, from: savedData) {
toDoItems = decodedItems
}
'Flutter' 카테고리의 다른 글
| Combine | 2. Operators and Subjects (0) | 2024.05.07 |
---|---|
ViewController의 생명주기 (0) | 2024.05.06 |
| Combine | 1. Getting Started (0) | 2024.05.05 |
| WWDC 19 | Introducing SwiftUI - Building Your First App (0) | 2024.04.23 |
WWDC 19 SwiftUI Essentials (0) | 2024.04.22 |