본문 바로가기

iOS 앱 개발자 프로젝트/iOS 숙련

[iOS] Core Data (+ Modeling Data)

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