[ swift ] 코어데이터(Core Data) 정리

sonny·2025년 1월 25일
0

TIL

목록 보기
113/133

1. 코어데이터란?

코어데이터는 애플의 데이터 관리 프레임워크이다.

데이터를 객체로 관리하며, 데이터의 저장, 검색, 정렬 등을 쉽게 처리할 수 있고,

SQLite와 같은 데이터베이스를 사용하지만 직접 SQL 쿼리를 작성하지 않고도 객체 지향적으로 데이터를 다룰 수 있다고 한다.


2. 코어데이터의 주요 개념

코어데이터는 다음과 같은 주요 개념으로 구성된다.

1) 엔티티(Entity)

  • 엔티티는 데이터베이스의 테이블과 같은 역할을 한다.
  • 예를 들어 Person이라는 엔티티는 사람의 정보를 저장하는 테이블이다.
  • 각 엔티티는 어트리뷰트(속성)와 릴레이션십(관계)로 구성된다.

2) 어트리뷰트(Attribute)

  • 어트리뷰트는 엔티티의 속성이다.
  • 예를 들어 Person 엔티티의 어트리뷰트는 name, age, email 등이 될 수 있다.
  • 어트리뷰트는 기본 데이터 타입(String, Int, Date 등)을 가진다.

3) 릴레이션십(Relationship)

  • 릴레이션십은 두 엔티티 간의 관계를 정의한다.
  • 예를 들면 Person 엔티티와 Passport 엔티티 간의 관계를 설정할 수 있다.
  • 릴레이션십은 일대일(One-to-One), 일대다(One-to-Many), 다대다(Many-to-Many)로 구분된다.

4) 매니지드 오브젝트(Managed Object)

  • 매니지드 오브젝트는 엔티티의 인스턴스이다.
  • 예를 들면 Person 엔티티의 매니지드 오브젝트는 Person 클래스의 인스턴스이다.
  • 매니지드 오브젝트는 코어데이터에서 데이터를 저장하고 검색하는 데 사용된다.

5) 매니지드 오브젝트 컨텍스트(Managed Object Context)

  • 매니지드 오브젝트 컨텍스트는 매니지드 오브젝트를 관리하는 작업 공간이다.
  • 데이터의 생성, 수정, 삭제 등의 작업은 모두 매니지드 오브젝트 컨텍스트를 통해 이루어진다.
  • 변경 사항은 save() 메서드를 호출하여 저장한다.

6) 매니지드 오브젝트 모델(Managed Object Model)

  • 매니지드 오브젝트 모델은 엔티티, 어트리뷰트, 릴레이션십을 정의한 데이터 모델이다.
  • Xcode의 .xcdatamodeld 파일을 통해 시각적으로 설계할 수 있다.

7) 퍼시스턴트 스토어 코디네이터(Persistent Store Coordinator)

  • 퍼시스턴트 스토어 코디네이터는 데이터를 실제로 저장하는 역할을 한다.
  • SQLite, XML, Binary 등의 저장 방식을 지원한다.

3. 코어데이터의 장점

  • 객체 지향적 접근
    데이터를 객체로 관리하여 직관적이다.

  • 데이터 일관성
    역관계(Inverse Relationship)와 삭제 규칙(Delete Rule)을 통해 데이터의 일관성을 유지한다.

  • 자동화된 관리
    데이터의 저장, 검색, 정렬 등을 자동으로 처리한다.

  • 성능 최적화
    메모리 관리와 지연 로딩(Lazy Loading)을 통해 성능을 최적화한다.


4. 코어데이터의 단점

  • 학습 곡선
    초기 학습이 다소 어렵다.
  • 복잡성
    간단한 데이터 저장에는 오버헤드가 발생할 수 있다.
  • 플랫폼 제한
    iOS, macOS 등 애플 플랫폼에서만 사용 가능하다.

5. 코어데이터 사용 예시코드

// 1. 코어데이터 스택 설정
let container = NSPersistentContainer(name: "Model")
container.loadPersistentStores { (storeDescription, error) in
    if let error = error as NSError? {
        fatalError("코어데이터 로드 실패: \(error), \(error.userInfo)")
    }
}

// 2. 매니지드 오브젝트 컨텍스트 가져오기
let context = container.viewContext

// 3. 새로운 매니지드 오브젝트 생성
let person = Person(context: context)
person.name = "김코더"
person.age = 25

// 4. 데이터 저장
do {
    try context.save()
    print("데이터 저장 성공!")
} catch {
    print("데이터 저장 실패: \(error)")
}

6. 코어데이터 활용 팁

  • 역관계 설정
    릴레이션십을 설정할 때 역관계를 꼭 추가해야 데이터 일관성이 유지된다.

  • 삭제 규칙
    릴레이션십의 삭제 규칙을 적절히 설정하여 데이터 무결성을 보장한다.

  • 성능 최적화
    대량의 데이터를 처리할 때는 배치(Batch) 작업을 사용한다.

  • 디버깅
    코어데이터의 SQLite 저장소를 직접 확인하려면 NSPersistentStoreCoordinator를 활용한다.


코어데이터는 애플 플랫폼에서 데이터를 효율적으로 관리할 수 있다.

객체 지향적인 접근 방식과 자동화된 관리 기능을 통해 복잡한 데이터 모델도 쉽게 다룰 수 있다.

배우는게 힘들지만 한 번 익히면 데이터 관리가 훨씬 편리해진다고하니 코어데이터를 잘 활용하면 앱의 성능과 안정성을 크게 향상시킬 수 있을 것이다.

profile
iOS 좋아. swift 좋아.

0개의 댓글

관련 채용 정보