Skip to content

CoreData, Persistence

Jinwon Choi edited this page Mar 19, 2025 · 1 revision

개요

CoreData는 Database가 아니다. CoreData의 수많은 기능 중 하나가 Persistence이다.

Persistence 외에도 아래와 같은 기능을 제공합니다.

하지만 이 문서에서는 Persistence에 대해서 알아보겠습니다.

image

설명

Core Data Stack

앱 모델을 관리하고 유지하는 역할을 수행한다.

image 1

  1. NSManagedObjectModel
    • 데이터 구조를 정의합니다. 데이터베이스의 테이블에 해당하는 엔티티(Entity)와 그 속성(attribute)을 정의하는 역할을 수행한다.
    • like DB 스키마
    • 이 모델은 Xcode에서 .xcdatamodeld 파일로 정의하며, Entity, Attribute, Relationship 등을 설정한다.
  2. NSPersistentStoreCoordinator
    • 실제 데이터를 저장하는 장소인 persistent storage와 managed object model를 연결하는 역할을 합니다.
    • like transaction
    • 이 컴포넌트는 데이터를 저장하고, 읽어오고, 관리하는 데 필요한 로직을 처리합니다. 예를 들어, SQLite 파일을 저장소로 사용할 때 이 저장소와의 연결을 관리한다.
  3. NSManagedObjectContext
    • 메모리 내에서 데이터를 관리하는 데 사용되며, 실제로 데이터를 추가, 삭제, 수정하는 작업을 수행합니다.
    • Managed Object를 생성하고 저장하고 가져오는(fetch) 역할을 수행한다.
    • MOC는 객체 그래프와 상호작용하는데 중요한 역할을 하며, 데이터를 변경하고 이를 영속 저장소에 저장하기 전에 임시적으로 데이터를 관리합니다.
    • MOC는 데이터 변경을 추적하며, 변경 사항을 저장소에 반영하기 위해 save() 메서드를 호출해야 합니다.
  4. NSPersistentContainer
    • 데이터를 실제로 저장하는 장소입니다. Core Data는 다양한 유형의 영속 저장소를 지원합니다:
      • SQLite: 일반적으로 많이 사용되는 데이터베이스 형식.
      • Binary: 데이터를 바이너리 형태로 저장.
      • In-memory: 메모리 내에만 데이터를 저장.
    • 이 저장소는 NSPersistentStoreCoordinator에 의해 관리됩니다.

Core Data Stack의 동작 흐름

  1. 모델 생성: NSManagedObjectModel을 사용하여 데이터를 저장할 구조를 정의합니다.
  2. Persistent Store Coordinator 설정: 영속 저장소를 설정하고, NSPersistentStoreCoordinator를 통해 데이터 저장소를 연결합니다.
  3. Managed Object Context 설정: NSManagedObjectContext를 생성하여 데이터를 다룰 공간을 만듭니다.
  4. 데이터 변경 및 저장: NSManagedObjectContext를 사용하여 데이터를 추가, 수정, 삭제하고, 변경 사항을 save() 메서드를 호출하여 영속 저장소에 반영합니다.

Ref.

https://developer.apple.com/documentation/coredata

https://zeddios.tistory.com/987

Welcome to SniffMEET Wiki!

💬 허거덩 팀 규칙

개발 일지

구조
NI, MPC
프로파일링
리팩토링/리디자인
테스트
Supabase

기술 공유

회의록

회의록

트러블 슈팅

발표

💬 허거덩 팀 규칙

Clone this wiki locally