Haru's 개발 블로그

[SwiftUI] persistentContainer란 무엇인가? 본문

IOS/SwiftUI

[SwiftUI] persistentContainer란 무엇인가?

Haru_29 2022. 5. 3. 16:38
import Foundation
import CoreData

class CoreDataManger {
    let persistentContainer: NSPersistentContainer
    static let shared: CoreDataManger = CoreDataManger()
    
    private init() {
        persistentContainer = NSPersistentContainer(name: "MusicPalaceModel")
        persistentContainer.loadPersistentStores{description, error in
            if let error = error {
                fatalError("Unable to initialize Core Data \(error)")
            }
        }
    }
}

현재 진행하는 프로젝트의 CoreData중 Mangers에 해당하는 부분입니다.

 

여기서 저는 persistentContainer에 대하여 자세히 알고 싶어서 구글링을 해보게 되었습니다.

persistentContainer은 과연 무엇인가???

 

Apple 공실 홈페이지에서는 "A container that encapsulates the Core Data stack in your app"

이라고 설명되있습니다.

 

예전 macOS에서는 코어데이터에서 스택을 생성하는 것을 수동으로 진행하였는데 Sierra버전 부터 persistentContainer로 

자동으로 stack생성이 가능하게 되었습니다.

 

Coredata에서 데이터 모델 파일을 만든 후에 앱의 모델 계층을 공동으로 지원하는 클래스를 설정하게 되는데 이를 코어 데이터 스택이라고 합니다.

Core Data Stack

여기서 4가지 인스턴스에 대하여 설명을 하고자 합니다.

NSManagedObjectModel 앱의 타입, 속성 및 관계를 나타내는 앱의 모델 파일을 나타냅니다.
NSManagedObjectContext 앱의 타입의 인스턴스가 변경하는지 추적합니다.
NSPersistentStoreCoordinator 스토어에서 앱의 유형의 인스턴스를 가져오고 저장하는 인스턴스입니다.
NSPersistentContainer model, context, store coordinator를 한번에 설정합니다.

 

일단 처음 Coredata를 불러올때 영구 컨테이너 초기화를 진행해보도록 하겠습니다.

그러면 처음에 보여준 코드의 플로우를 보도록 합시다.

1. NSPersistentContainer의 지역변수를 선언하도록 합니다.

2. 데이터 모델 파일 이름을 이니셜라이저에 전달하여 영구 컨테이너 인스턴스를 생성합니다.

3.영구 저장소를 로드합니다. 이때 스토어가 없는 경우면 스토어를 생성하도록 합니다.

'IOS > SwiftUI' 카테고리의 다른 글

[SwiftUI] TCA 정리  (0) 2023.03.01
[SwiftUI] @StateObject  (0) 2022.06.17
[SwiftUI] SwiftUI에서 UserDefaults를 사용 -> @AppStorage  (0) 2022.06.16
[SwiftUI] Coredata 사용해보기  (0) 2022.05.04
[SwiftUI] VoiceViewModel 코드 분석하기  (0) 2022.05.04
Comments