iOS/Swift

[Swift] Core Data(1) - 사용 설정하기

YEN_ 2024. 2. 2. 22:59

 

🩵 Core Data란?

Core Data는 앱의 데이터를 관리하는 똑똑한 비서같은 존재입니다!

앱에서 사용하는 모든 정보, 즉 사진, 메모, 설정 등을 안전하게 보관하고 필요할 때 꺼내 주는 역할을 하지요.

마치 우리 뇌의 기억 장치와 같은 존재라고 생각하면 쉽습니다.

 

 

 

1. 사용하기 쉽다

  • 복잡한 데이터베이스 관리를 숨겨서 간단한 코드로 데이터를 저장하고 관리할 수 있도록 도움
  • 마치 레고 블록처럼 다양한 데이터를 쉽게 조립하고 분해할 수 있음

2. 안전하고 신뢰할 수 있다

  • 데이터 손실을 막기 위해 백업 기능을 제공하고, 여러 기기에서 동일한 데이터를 사용할 수 있도록 도움
  • 앱이 갑자기 꺼지더라도 저장된 데이터는 안전하게 보호

3. 다양한 기능을 제공한다

  • 오프라인에서도 데이터를 사용할 수 있음
  • 인터넷 연결 없이도 앱을 사용할 수 있도록 데이터를 미리 저장
  • 데이터를 빠르게 검색하고 필터링할 수 있음
  • 필요한 정보를 쉽게 찾을 수 있도록 정리

4. 앱 성능을 향상시킨다

  • 데이터를 효율적으로 관리하여 앱 속도를 높임
  • 불필요한 데이터 처리를 줄여 앱 실행 시간을 단축

 

 

 

 

🩵 Core Data Model 생성하기

✔️ 1. Data Model 파일 생성

 

Core Data 섹션의 Data Model을 만들어주면~

 

 

프로젝트에 .xcdatamodeld파일이 포함됩니다.

 

 

 

✔️ 2. AppDelegate에 CoreData Stack 설정

 

앱의 모델 계층을 공동으로 지원하는 클래스를 설정합니다.

이러한 클래스를 통칭하여 Core Data Stack이라고 합니다.

 

 

1. 데이터 설계 - NSManagedObjectModel

  • 앱의 유형, 속성 및 관계를 설명하는 앱의 모델 파일
  • 앱에서 사용하는 데이터의 종류, 특징, 관계 등을 정의
  • (ex) 건축 설계도 

2. 데이터 관리 - NSManagedObjectContext

  • 앱 유형 인스턴스의 변경 사항을 추적
  • 실제 데이터를 저장하고 관리하는 공간
  • (ex) 건축 현장 사무실

3. 데이터 저장 - NSPersistentStoreCoordinator

  • 스토어에서 앱 유형의 인스턴스를 저장하고 읽어옴
  • 데이터를 저장 장치에 안전하게 보관하는 역할
  • (ex) 건축 완료 후 보관하는 창고

4. 편리한 솔루션 - NSPersistentContainer

  • 모델, 컨텍스트, 매장 코디네이터를 모두 한 번에 설정
  • 위의 세 가지 요소를 하나로 묶어 더욱 편리하게 사용할 수 있도록 도움
  • (ex) 건축 설계부터 시공, 보관까지 한 번에 해주는 건설 회사

 

핵심 데이터 스택을 사용하면 앱의 데이터를 효율적이고 안전하게 관리할 수 있습니다.

 

 

 

 

ㄴ 코드로 Persistent Container 초기화

 

일반적으로 앱이 시작될 때 핵심 데이터를 초기화합니다.

이는 마치 앱을 처음 실행할 때 빈 캔버스를 준비하는 것과 같아요.

 

하지만 Persistent Container를 지연 변수로 생성하면 앱 실행 초기에 초기화를 연기할 수 있습니다.

앱 시작 속도를 높일 수 있는 좋은 방법입니다.

 

import CoreData

// MARK: - Core Data stack

lazy var persistentContainer: NSPersistentContainer = {
    let container = NSPersistentContainer(name: "YoutModel")
    container.loadPersistentStores(completionHandler: { (storeDescription, error) in
        if let error = error as NSError? {
            fatalError("Unresolved error \(error), \(error.userInfo)")
        }
    })
    return container
}()

// MARK: - Core Data Saving support

func saveContext() {
    let context = persistentContainer.viewContext
    if context.hasChanges {
        do {
            try context.save()
        } catch {
            let nserror = error as NSError
            fatalError("Unresolved error \(nserror), \(nserror.userInfo)")
        }
    }
}

 

  • lazy var persistentContainer는 지연 변수입니다.
    • 앱 시작 속도를 높일 수 있습니다.
    • 메모리 사용량을 줄일 수 있습니다.
  • NSPersistentContainer(name: "YourModel")은 앱의 모델 이름을 지정합니다.
  • loadPersistentStores(completionHandler:)은 데이터 저장소를 로드합니다.

 

ㄴ 프로젝트 생성 시 설정 추가하기


새 Xcode 프로젝트를 생성할 때 Storage의 Core Data를 선택하여

템플릿에 설정 코드가 AppDelegate에 자동으로 포함되게 할 수 있어요

 

 

 

 

 

 

Core Data 파일 생성과 초기화 세팅을 마쳤습니다!

다음에는 간단한 CRUD(Create - Read - Update - Delete)를 진행해볼게요 😀

 

 

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

 

Core Data | Apple Developer Documentation

Persist or cache data on a single device, or sync data to multiple devices with CloudKit.

developer.apple.com

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

 

Creating a Core Data model | Apple Developer Documentation

Define your app’s object structure with a data model file.

developer.apple.com