2024년 4월 11일 목요일
Core Data
Persist or cache data on a single device, or sync data to multiple devices with CloudKit.
하나의 기기에 데이터를 영구적으로 저장하거나 캐싱 처리할 때 사용할 수 있고, Cloud Kit을 사용해 여러 기기의 데이터를 동기화 할 수 있다.
그러니까.. 모델 계층의 객체를 관리하는 Core Data에 대해 공부해 봅니다.
※ 공식문서에서 설명하는 아래의 기능들이 있기에 1) 오프라인 상태에서도 사용하도록 앱의 영구적 데이터를 저장할 때, 2) 데이터를 임시로 캐시할 때, 3) 앱에 실행 취소 기능을 추가할 때 Core Data를 사용한다.
1. Persistence :
Core Data는 저장할 객체를 추상화하여, 데이터베이스를 직접 관리하지 않고도 데이터를 쉽게 저장할 수 있도록 해준다.
2. Undo and Redo of Individual or Batched Changes :
Core Data의 실행 취소 관리자는 변경사항을 추적하고 개별/그룹/한번에 롤백할 수 있게 해준다. 그래서 앱에 실행 취소 및 다시 실행 기능을 쉽게 추가할 수 있다.
3. Background Data Tasks :
background에서 JSON을 객체로 파싱하는 UI-blocking 데이터 작업을 수행한다. 이 결과를 캐시하거나 저장하여 roundtrips(서버 왕복)을 줄일 수 있다.
4. View Synchronization :
TableView와 CollectionView에 대한 데이터 원본을 제공하여 view와 데이터를 동기화된 상태로 유지할 수 있게 해준다.
5. Versioning and Migration :
데이터 모델의 버전을 관리하고 앱이 업데이트됨에 따라 사용자 데이터를 마이그레이션하는 메커니즘이 포함되어 있다.
+ Modeling Data (Creating a Core Data Model)
#1. 진행 중인 프로젝트에서 .xcdatamodeld 파일을 추가한다.
#2. Entity를 설정한다.
한 개의 Entity 는 한 개의 데이터 모델을 표현한다.
예) Todo Entity 를 정의하면 여러 개의 Todo 를 코어데이터 저장소에 저장할 수 있다.
#3. Container를 만든다. (CRUD 중 Create의 단계!)
let container = NSPersistentContainer.init(name: "데이터 모델 파일명")
var persistentContainer: NSPersistentContainer? {
(UIApplication.shared.delegate as? AppDelegate)?.persistentContainer
}
Setting up a Core Data stack | Apple Developer Documentation
Set up the classes that manage and persist your app’s objects.
developer.apple.com
#4. Read
NSFetchRequest 인스턴스를 만들어서 context 에 전달하는 방식으로 가져온다.
var context = (UIApplication.shared.delegate as? AppDelegate)?.persistentContainer.viewContext
'iOS 앱 개발자 프로젝트 > iOS 숙련' 카테고리의 다른 글
[iOS] Decodabe, Encodable, Codable (0) | 2024.04.13 |
---|---|
[iOS] URLSession (0) | 2024.04.12 |
[iOS] Core Data stack (0) | 2024.04.12 |
[iOS] WishList App (feat. Network &API) (0) | 2024.04.11 |
[Swift] ARC (Automatic Reference Counting) (0) | 2024.04.09 |