[swift] 코어 데이터 마이그레이션 툴

코어 데이터(Core Data)는 iOS와 macOS 앱에서 데이터 모델링과 관리를 위한 프레임워크입니다. 데이터 모델이 변경될 때, 즉 앱의 업데이트나 버전 업그레이드가 발생했을 때, 이전 버전의 데이터를 새로운 데이터 모델과 호환되도록 변환해야 할 필요가 있습니다. 이 과정을 마이그레이션(Migration)이라고 합니다.

코어 데이터는 마이그레이션을 수행하기 위한 강력한 툴을 제공합니다. 이 툴은 기존 데이터 모델과 새로운 데이터 모델 간의 차이점을 파악하고, 자동으로 데이터의 변환을 수행할 수 있습니다.

마이그레이션 툴 사용하기

  1. 먼저, 프로젝트 내에 있는 .xcdatamodeld 파일에 새로운 데이터 모델을 추가합니다. 이 모델은 기존 데이터 모델과 호환되는 변경 사항이 포함되어야 합니다.

  2. Xcode에서 코어 데이터 모델을 열고, Editor 메뉴에서 Add Model Version을 선택합니다.

  3. 마이그레이션 템플릿이 생성되며, 새로운 데이터 모델을 위한 폴더가 생성됩니다. 이 폴더 내에는 이전 데이터 모델과의 차이점을 기록하는 .xcmappingmodel 파일이 생성됩니다.

  4. .xcmappingmodel 파일을 열고, 이전 데이터 모델과 새로운 데이터 모델 간의 변환 로직을 설정합니다. 이 로직은 데이터 모델의 필드 변경, 추가, 삭제 등을 포함합니다.

  5. 이제 마이그레이션 툴을 이용하여 데이터를 변환할 준비가 되었습니다. 앱의 런타임에서 마이그레이션을 수행하려면, 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 옵션은 자동 매핑 모델 추론을 활성화합니다.

주의사항

참고 자료