본문 바로가기

iOS

[iOS] core Data Migration하는 방법

# 마이그레이션

[정의]

우리가 다이어리 앱을 개발한다고 가정해봅시다. 이 앱에 Core Data에는 id, title, date, content 이 저장되고 있죠.
그런데 버전업데이트를 위해서 app의 다음버전에 model/ attribute에 대한 새 속성(iconID, main)을 추가하려고합니다. 날씨의 아이콘과 main에 대한 정보이죠.
만일 이 새로운 버전의 정보로 앱을 업데이트하고 버전 배포를 하게되면 이전 버전을 사용하는 사용자의 기존데이터가 손실될 수 있습니다!!

그럴떈 어떻ㄱ ㅔ해야할까요 ??

# Migration

새로운 변경 사항을 위해 기존모델을 변경하면 안됩니다. 이전 사용자를 위해 보존하되 새로운 버전을 사용하는 사용자도 포용할 수 있어야겠죠 그러려면 .xcdatamodeld의 새로운 버전을 만들고 MappingModel로 구현을 하면 끝입니다.

정말 간단하니깐 바로 알아보시죠!

먼저 이전 버전의 모델을 선택하고 Editor창에서 새로운 version을 추가합니다.

두번째로 Attribute를 추가할 속성을 추가해줍니다.

세번째로 inspector창에서 ModelVersion을 version2을 설정 해줍니다.

네번째로 이전버전과 현재버전을 연결해줄 mapping Model 파일을 새로 만듭니다.

첫번째는 이전버전을 선택해주고


다음에서는 이후 버전을 선택하주어 둘을 맵핑해주는것같아보입니다.

마지막으로 attribute가 추가되었기때문에 CoreData의 프로퍼티도 추가해주어야합니다.
main, iconID와 같이 추가해준것이죠.

이렇게 되면 Migration은 끝!!

실행했을때 이전데이터를 잘 불러오며 에러가 발생하지않으면 잘 동작하는겁니다!!!

마이그레이션 참쉽죠 ?

 

# reference

https://medium.com/@maddy.lucky4u/swift-4-core-data-part-5-core-data-migration-3fc32483a5f2