iOS - CoreData

이한솔·2023년 9월 14일
0

iOS 앱개발 🍏

목록 보기
18/49

CoreData

Core Data는 iOS 및 macOS 애플리케이션에서 데이터 모델을 관리하고 지속적으로 저장하는 데 사용되는 애플에서 제공하는 프레임워크이다. (데이터베이스가 아니다!)
UserDefaults보다 조금 더 복잡한 데이터를 영구적으로 저장하는데 적합하다.



CoreData의 기능

  1. 영속성(Persistence)
  2. 변경사항의 Undo, Redo
  3. 백그라운드 데이터 작업 기능
  4. 동기화 기능
  5. 버전 관리 및 마이그레이션(Migration)

Core Data는 SQLite를 기반으로 한 데이터를 오래 저장하고 지속적으로 사용할 수 있는 영속성 기능을 제공한다. Core Data는 데이터 모델을 정의하여 애플리케이션의 데이터 구조를 나타낸다. 엔터티, 속성, 관계 등이 포함되고 객체 그래프 관리자를 사용하여 객체를 연결하고 관리한다.
데이터베이스는 일반적으로 "행"과 "열"의 관계를 사용하여 데이터를 저장하고 검색한다.
Core Data는 객체를 연속적으로 탐색해야 하기 때문에 Linked List와 유사한 성능을 가지며, 스레드 안전성이 없어 동기화 처리가 필요하다.
그러나 원하는 데이터를 메모리에 적재할 수 있어 대규모 데이터를 저장해도 메모리 효율이 떨어지지 않는 장점이 있다.



CoreData의 용어

Entity

데이터 모델에서 객체를 나타내는 부분으로, 특정 유형의 데이터를 표현한다. 예를 들어, Person이나 Book과 같은 엔터티가 될 수 있다.

Attribute

엔터티의 특성을 나타내며, 해당 엔터티의 데이터를 설명한다. Person 엔터티의 예에서는 이름, 나이 등이 속성이 될 수 있다.

Relationship

두 엔터티 간의 연결을 나타낸다. 예를 들어, PersonAddress라는 두 엔터티 간에는 일대다 또는 일대일 관계가 있을 수 있다.

NSPersistentContainer

  1. Core Data 스택을 초기화하고 설정하는 주체
  2. 데이터 모델, 코디네이터, 컨텍스트 등을 자동으로 설정하여 개발자가 복잡한 초기화 작업을 직접 수행할 필요 없이 Core Data를 사용할 수 있도록 한다.

NSManaged Object Context

  1. 데이터를 저장하고 관리하는 핵심적인 객체, 이 컨텍스트를 통해 앱은 Core Data에서 데이터를 읽고 쓸 수 있다.
  2. 데이터의 생명주기를 관리하고 데이터 변경 사항을 추적하여 적절한 시점에 저장할 수 있도록 합니다.

NSManaged Object Model

  1. 데이터 모델은 Core Data에서 사용할 데이터 구조를 정의한다. 개체(Entity), 속성(Attribute), 관계(Relationship) 등을 포함한다.
  2. .xcdatamodeld 확장자를 가진 파일에서 시각적으로 작성되거나 코드로 작성될 수 있다.

NSManaged Object

  1. 데이터 모델에서 정의한 엔터티(Entity)의 인스턴스를 나타낸다.
  2. 데이터베이스의 행(row)에 해당하며, 엔터티의 속성 값을 저장하고 관리한다.

NSPersistent Store Coordinator

  1. 앱의 데이터를 영구적으로 저장하고 검색하는 데 사용된다.
  2. 데이터베이스 파일과의 상호 작용을 담당하며, 여러 데이터 컨텍스트가 동일한 데이터베이스에 액세스할 수 있도록 한다.

NSFetch Request

  1. 데이터베이스에서 데이터를 검색하기 위한 쿼리를 정의하는 객체이다.
  2. 특정 조건을 충족하는 엔터티의 인스턴스를 검색하는 데 사용된다.

0개의 댓글