2013-04-05 2 views
2

모두 괜찮 으면 좋겠다. :)핵심 데이터 및 매핑 모델 마이그레이션

코어 데이터를 사용하는 데이터베이스가 있습니다. 내 응용 프로그램 V1.0에서는 사용자가 응용 프로그램에서 일부 파일을 가져올 수 있습니다. 이제 내 V2.0에서 내 모델에 속성을 추가하고 싶지만 V1.0이 있고 저장된 파일이있는 사용자는 모든 파일을 보관해야합니다 (앱을 업그레이드하는 경우 삭제하지 않음). . 그래서 새로운 속성으로 새로운 데이터 모델을 만들고 현재의 버전이있는 핵심 데이터 모델을 새로운 데이터 모델로 설정합니다 ... Ok. 하지만 내 앱을 실행하면 파일이 삭제됩니다.

일반적으로 매핑 모델을 사용해야합니다. 그러나 이것을하는 방법? 매핑 모델을 만들 때 원본 데이터 모델과 대상 데이터 모델은 무엇입니까?

도움을 주셔서 감사합니다. 좋은 하루 되세요! :)

편집 :

난 그냥 새로운 속성 추가 만 속성의 이름을 편집 할 경우, 어쩌면 내가 아니 ... 매핑 모델을 만들 필요가 없습니다?

답변

4

매핑 모델을 사용하는 경우 원본 모델은 v1.0 모델이되고 대상은 새 v2.0 모델이됩니다. Lightweight Migration, documentation here을 사용하여 매핑 모델을 사용하지 않고 도망 갈 수 있습니다.

귀하가 말한 것의 요지는 앱 위임자에게 가서 영구 저장소에 대한 관련 옵션을 설정해야한다는 것입니다.

그것은 현재의 관리 개체 모델 버전이 사용하고 있고 업데이트 된 모델에 저장소를 마이그레이션하는 상점과 다른 경우 NSMigratePersistentStoresAutomaticallyOption 키를 확인하는 코어 데이터를 알려줍니다

NSDictionary *options = @{NSMigratePersistentStoresAutomaticallyOption: @YES, NSInferMappingModelAutomaticallyOption: @YES}; 

[persistentStoreCoordinator addPersistentStoreWithType:storeType configuration:config URL:storeURL options:options error:&error]; 

처럼 보일 것이다. NSInferMappingModelAutomaticallyOption은 매핑 자체를 작동 시키려고합니다. 이것은 'Lightweight Migration'비트입니다.

대부분 이미 있습니다. 옵션 사전을 추가하기 만하면됩니다. 그것은 - (NSPersistentStoreCoordinator *)persistentStoreCoordinator 방법에있을 것입니다. 적어도 NSMigratePersistentStoresAutomaticallyOption을 설정하지 않으면 마이그레이션이 수행되지 않습니다.

개발 중 가벼운 매핑이 유용합니다. 매번 다시 매핑 할 필요없이 모델을 변경할 수 있음을 의미합니다.

관련 문제