[ios] Core Data 마이그레이션

Core Data는 iOS 앱에서 데이터를 관리하고 지속성을 제공하는 프레임워크입니다. 때로는 앱을 업데이트하거나 데이터 모델을 변경해야 할 때, 기존의 데이터를 새로운 데이터 모델로 옮겨야 할 때가 있습니다. 이때 Core Data 마이그레이션을 사용하여 데이터를 안전하게 이동할 수 있습니다.

마이그레이션이 필요한 경우

기존의 데이터 모델을 수정하거나 새로운 속성을 추가하는 등의 변경으로 인해 데이터베이스 스키마가 변경되면 Core Data 마이그레이션을 수행해야 합니다. 또한, 데이터 형식을 변경하거나 데이터를 새로운 위치에 저장해야 할 때에도 마이그레이션을 해야 합니다.

Core Data 마이그레이션 방법

Core Data에서는 NSMappingModelNSEntityMigrationPolicy 클래스를 사용하여 마이그레이션을 수행할 수 있습니다. 먼저, NSMappingModel을 사용하여 이전 데이터 모델과 새로운 데이터 모델 간의 매핑을 정의합니다. 그리고 NSEntityMigrationPolicy 클래스를 사용하여 데이터 변환 및 추가 작업을 수행할 수 있습니다.

예시 코드

아래는 Core Data 마이그레이션을 위한 예시 코드입니다.

let mappingModel = NSMappingModel(from: nil, forSourceModel: sourceModel, destinationModel: destinationModel)

let migrationManager = NSMigrationManager(sourceModel: sourceModel, destinationModel: destinationModel)

let mappingModelURL = Bundle.main.url(forResource: "YourMappingModel", withExtension: "cdm", subdirectory: "YourSubdirectory")

let mappingModel = NSMappingModel(contentsOf: mappingModelURL)

do {
    try migrationManager.migrateStore(from: storeURL, sourceType: NSSQLiteStoreType, options: nil, with: mappingModel, toDestinationURL: destinationStoreURL, destinationType: NSSQLiteStoreType, destinationOptions: nil)
} catch {
    print("Migration failed: \(error)")
}

요약

Core Data를 사용하는 앱에서 데이터 모델을 변경할 때에는 Core Data 마이그레이션을 통해 기존 데이터를 안전하게 새로운 모델로 이동할 수 있습니다. NSMappingModelNSEntityMigrationPolicy 클래스를 사용하여 마이그레이션을 수행할 수 있으며, 이를 통해 데이터 모델 변경에 따른 데이터 이동이 가능해집니다.

참고 자료