[TIL] Core Data

Eden·2025년 7월 2일

Core Data는 Apple에서 제공하는 객체 지향형 영속성 프레임워크입니다.
iOS, macOS 앱에서 데이터를 저장하고 관리할 수 있게 도와주는 핵심 기술 중 하나입니다.


1. Core Data란?

  • 데이터를 객체 형태로 관리할 수 있는 프레임워크
  • 내부적으로는 SQLite 등을 사용하지만, 개발자는 객체로 다루면 됨
  • 데이터 저장, 검색, 수정, 삭제 등의 작업을 손쉽게 처리 가능

2. 주요 개념

개념설명
NSManagedObjectCore Data에 저장되는 객체의 기본 클래스
NSManagedObjectModel데이터 모델의 구조 (Entity, Attribute 등 정의)
NSPersistentContainerCore Data Stack을 캡슐화한 클래스
NSManagedObjectContext실제 데이터를 저장하거나 불러올 때 사용되는 작업 공간
NSPersistentStoreCoordinator실제 저장소와 연결 (보통 SQLite)

3. Entity란?

  • 클래스처럼 동작하는 데이터 구조
  • 속성(Attribute)을 가질 수 있음
  • 관계(Relationship)를 설정해 다른 Entity와 연결 가능

예시:

Entity: Person
Attributes: name (String), age (Int16)

4. Core Data Stack

Core Data를 사용하기 위해 필요한 구성 요소를 하나로 묶은 구조

  1. NSPersistentContainer 생성
  2. viewContext를 통해 작업 수행
  3. 변경 사항을 저장(save())

5. 기본 사용 흐름

let context = persistentContainer.viewContext

// 객체 생성
let person = Person(context: context)
person.name = "John"
person.age = 30

// 저장
do {
    try context.save()
} catch {
    print("저장 실패: \(error)")
}

// 불러오기
let fetchRequest: NSFetchRequest<Person> = Person.fetchRequest()
let results = try? context.fetch(fetchRequest)

6. Core Data의 장점

  • 객체 형태로 데이터 관리 가능 (OOP 친화적)
  • 자동 변경 추적 및 Undo/Redo 지원
  • 대용량 데이터 처리 및 성능 최적화에 유리

7. 주의사항

  • 멀티스레드 환경에서 context 충돌 주의
  • 영속 저장소가 손상되면 복구가 어려움
  • 성능 이슈가 발생하지 않도록 fetch 범위 제한 필요

결론

Core Data는 복잡한 데이터 모델을 객체처럼 쉽게 관리할 수 있게 해주는 강력한 프레임워크입니다.
기본 개념과 사용법을 이해하면, 앱의 데이터 관리가 훨씬 구조적이고 효율적으로 변할 수 있습니다.

profile
iOS Dev

0개의 댓글