코어 데이터(Core Data)는 iOS와 macOS 앱에서 데이터 모델링과 관리를 위한 프레임워크입니다. 데이터 모델이 변경될 때, 즉 앱의 업데이트나 버전 업그레이드가 발생했을 때, 이전 버전의 데이터를 새로운 데이터 모델과 호환되도록 변환해야 할 필요가 있습니다. 이 과정을 마이그레이션(Migration)이라고 합니다.
코어 데이터는 마이그레이션을 수행하기 위한 강력한 툴을 제공합니다. 이 툴은 기존 데이터 모델과 새로운 데이터 모델 간의 차이점을 파악하고, 자동으로 데이터의 변환을 수행할 수 있습니다.
마이그레이션 툴 사용하기
-
먼저, 프로젝트 내에 있는
.xcdatamodeld
파일에 새로운 데이터 모델을 추가합니다. 이 모델은 기존 데이터 모델과 호환되는 변경 사항이 포함되어야 합니다. -
Xcode에서 코어 데이터 모델을 열고,
Editor
메뉴에서Add Model Version
을 선택합니다. -
마이그레이션 템플릿이 생성되며, 새로운 데이터 모델을 위한 폴더가 생성됩니다. 이 폴더 내에는 이전 데이터 모델과의 차이점을 기록하는
.xcmappingmodel
파일이 생성됩니다. -
.xcmappingmodel
파일을 열고, 이전 데이터 모델과 새로운 데이터 모델 간의 변환 로직을 설정합니다. 이 로직은 데이터 모델의 필드 변경, 추가, 삭제 등을 포함합니다. -
이제 마이그레이션 툴을 이용하여 데이터를 변환할 준비가 되었습니다. 앱의 런타임에서 마이그레이션을 수행하려면,
NSPersistentStoreCoordinator
에서addPersistentStore
메서드를 호출할 때NSMigratePersistentStoresAutomaticallyOption
을 true로 설정하면 됩니다.
let coordinator = NSPersistentStoreCoordinator(managedObjectModel: model)
let options = [NSMigratePersistentStoresAutomaticallyOption: true,
NSInferMappingModelAutomaticallyOption: true]
try coordinator.addPersistentStore(ofType: NSSQLiteStoreType,
configurationName: nil,
at: storeURL,
options: options)
위의 예제 코드에서 NSMigratePersistentStoresAutomaticallyOption
옵션은 자동 마이그레이션을 활성화하고, NSInferMappingModelAutomaticallyOption
옵션은 자동 매핑 모델 추론을 활성화합니다.
주의사항
-
코어 데이터 마이그레이션은 데이터의 중요성과 복잡성을 고려해야 할 때 주의가 필요합니다. 실제로 데이터를 검증하고 변환 과정을 신중하게 수행해야 합니다.
-
새로운 데이터 모델을 만들 때는 가능한 한 호환성을 유지하는 것이 좋습니다. 필드의 이름 변경이나 삭제, 데이터 타입 변경 등은 주의해야 합니다.