본문 바로가기

iOS/iOS

iOS) CoreData - Migration

코어데이터 변경 및 마이그레이션

Error

코어데이터 모델을 변경하고 마이그레이션을 하지 않았더니 다음과 같은 에러가 발생했습니다. 코어데이터를 처음 사용하는 것이라 마이그레이션을 해야한다는 것 조차 모르고 그냥 변경했더니 에러가 주르륵...

일단 급한대로 시뮬레이터에 설치된 앱을 지웠더니 에러는 사라졌습니다. 매번 코어데이터를 변경할 때마다 앱을 지우고 다시 깔 수도 없고 특히 이미 배포해 버린 후라면 유저들에게 일일이 앱을 지우고 다시 설치해달라고 할 수 없으니 코어데이터 모델을 변경하는 법을 알아봅시다.

새로운 모델 버전 추가

Add Model Version

Editor -> Add Model Version 을 선택하고 이름을 버전 2라는 의미로 기존 모델 명에 v2를 추가하여 생성합니다.

Add Model VersionAdd Model Version - version name

그러면 다음과 같이 ---v2.xcdatamodel이 생성된 것을 볼 수 있습니다.

New Model Version

Update Model Version

그 다음으로 할 일은 새로 생성한 ---v2.xcdatamodel을 선택 후 우측 Inspectors를 눌러 Model Version을 새로 생성한 MiniVibe v2로 변경해 줍니다. 여기서 MiniVibe는 제가 설정한 이름이고 여러분이 생성한 모델 명의 버전 2를 선택하면 됩니다.

Update Model Version

그러면 다음과 같이 녹색 체크박스가 ---v2.xcdatamodel로 이동하였습니다. 이제부터 코어데이터 모델을 변경하면 됩니다.

Did Update Model Version

Change Attributes Name

만일 Attribute Name을 변경하고 싶으면 해당 Attribute를 선택한 후 우측 하단에 보이는 Renaming ID 에 기존의 Attribute Name을 기입하고 원하는 이름으로 변경하면 됩니다.

Add Mapping Model

위의 작업을 마치고 다시 앱을 실행하면 짜잔 에러가 발생합니다.

Error

모든 변경이 마무리되면 Mapping Model을 추가해줘야 합니다.

command + n을 눌러 새로운 파일 생성하기를 실행시킵니다. iOS에서 Mapping Model을 선택 후 Next를 누릅니다.

Add Mapping Model

그 다음 Source Data Model은 이전 xcdatamodel을 선택합니다.

Mapping Model Source Data

Target Data Model은 새로 생성한 ---v2.xcdatamodel을 선택합니다.

Mapping Model Target Data

그 다음 이름을 정하고 생성한 후 프로젝트를 빌드하여 앱을 실행시키면 에러 없이 잘 실행됩니다.🌝

New Mapping Model

참고