[iOS] Core Data 이용 데이터 관리하기 (2/2)

2020. 9. 1. 22:31iOS

반응형

이전 글에서 Core Data을 사용하는 방법을 직접적으로 보셨죠⁉️

 

대략적인 설명은 있었지만, 주로 사용하는 방법 위주의 간단한 설명들이었어요.

그렇다면 이번 글에서는 각각의 레퍼런스들이 어떤 역할을 하는지 알아야겠죠?

 

한 번 같이 알아봐요 🙌

 

이전 글을 안 보고 오신 분들 여기서 참고해주세요.

 

Core Data 이용 데이터 관리하기 (1/2)

이번에 최근 검색어 기능을 구현해야하는 프로젝트가 있었어요..‼️ 최근 검색어의 경우에는 서버에서 주는 값이 아니고 사용자의 검색 기록이기 때문에 iPhone에 자체적으로 저장되어야 할 것

dongminyoon.tistory.com


저번 시간에 Core Data에 접근하는 방법을 생각해볼까요?

 

 

1️⃣Core Data Model에 대한 ContainerAppDelegate에 생성

 

2️⃣Container의 Context을 부름

 

3️⃣저장하고 싶은 Entity을 생성하고 그에 맞게 NSManagedObject을 생성

 

4️⃣원하는 값을 설정하고 ContextNSManagedObject을 저장

 

 

대략 이런 플로우였는데, 여기서 사용되는 레퍼런스 타입에 대해 한 번 설명을 해볼게요~~

우선 Core Data을 알기 위해 애플 개발자 문서를 먼저 보는 습관은 필수겠죠⁉️

 

 

Core Data Stack의 기본적인 모식도입니다.

잘 보시면 접근하는 방법 설명에서도 본 것과 비슷한 타입들이 보이죠⁉️

 

그렇다면 하나하나 자세하게 살펴볼게요.

 

 

NSPersistantContainer

전체적으로 모든 것을 관리하는 최상단의 객체라고 생각하면 될 것 같다.

Core Data Stack의 생성, 관리 등을 NSMangedObjectModel, NSPersistentStoreCoordinator, NSManagedObject Context을 관리함으로 담당한다.

 

즉, 데이터를 저장하는 핵심 객체이다.

 

 

NSPersistentStoreCoordinator

NSMangedObjectContextNSPersistantContainer의 사이를 중재해주는 역할이다.

중재한다고 하는데 정확히 무슨 역할을 하는지는 모르겠다...

 

 

NSMangedObjectContext

관리 객체들의 그룹으로 이루어진 객체이다.

즉, 이 객체를 사용해 관리 객체들을 생성(create), 삭제(delete), 가져오는(fetch), 업데이트(update) 작업들을 할 수 있다.

 

관리 객체들에 대한 Transaction으로 이해하면 될 것 같다.

 

 

NSManagedObjectModel

각 Entitiy들의 관계, 각 객체들의 프로퍼티들에 대한 설명을 가지고 있는 객체이다.

어떤 스키마에 대한 설명들을 관리한다.

 

즉, 데이터 베이스 스키마라고 이해하면 될 것 같다.

 

 

NSManagedObject

NSManagedObjectModel이 데이터 베이스 스키마라고 한다면, 이 객체는 실제 데이터 모델이라고 할 수 있다.

이 객체를 생성해서 Context을 통해 저장을 한다.

 

즉, 실제 데이터 모델이다.

 

 

 

이렇게 두 번의 포스팅에 걸쳐 Core Data의 사용법과 각 객체들의 역할에 대해 알아봤어요..‼️

 

뭔가 서버와의 통신 없이 복잡한 데이터를 저장해야 할 경우 유용하게 사용할 수 있겠죠.

 

혹시 포스팅 중 잘못된 내용이 있거나 이해하기 어려운 내용이 있으면 댓글 달아주세요~~

 


참고 레퍼런스

반응형