2013-07-08 2 views
0

4 가지 버전의 CoreData 모델이 있습니다. 나는 네 번째에 작은 변화, 하나의 엔티티에 새로운 선택적 속성을 추가했습니다. 버전 2와 3 사이에서 새로운 버전을 만드는 대신 실수로 기존 모델을 변경했습니다. 버전 2를 복원하고 버전 3을 추가하고 저장소 삭제를 강제 했으므로 응용 프로그램을 업데이트하는 사용자가 저장소를 다시 생성하고 마이그레이션을 수행하지 않았습니다.MagicalRecord를 사용하여 여러 개의 경량 CoreData 마이그레이션을 수행 할 수 있습니까?

이 방법은 잘되었지만 지금은 CoreData와 MagicalRecord를 사용하여 가벼운 마이그레이션을 수행하고 있습니다. 버전 3에서 4까지의 저장소에서 항상 Can't find or automatically infer mapping model for migration 오류가 발생합니다. 나는 다시 삭제를 강요하고 싶지 않지만 가벼운 마이그레이션을 해결하기 위해 내가 할 수있는 다른 일에 매달렸다. 문제가 여전히 버전 2와 3 사이에 있다고 의심하기 시작했으나이를 확인할 수는 없습니다. 나는 내 가게를 설정하는 데 사용하고 코드

은 매우 간단합니다 :

[MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed:@"Store.sqlite"]; 

답변

1

이 오류 메시지는 일반적으로 어느 앱 번들 중 하나를 원본 또는 대상 모델에 포함되어 삭제되거나하지 않은 것을 의미한다, 그래서 핵심 데이터는 당신을위한 매핑 모델을 만들 수 없습니다. 엔티티가 영향을 받는지 확인하는 방법은 콘솔에 모델 해시를 출력하고 비교 한 엔티티를 비교하는 것입니다. 거기에서 매핑 모델을 작성하는 방법을 결정할 수 있습니다. 또한 마이그레이션은 순차적이지 않습니다. 모델 버전이 4 개이므로 4 x ​​3 x 2 마이그레이션 조합이 있습니다. 코어 데이터는 소스 저장소가있는 버전과 최신 버전 중 하나만 수행합니다. 따라서 모든 기반을 충당하기 위해 v1에서 v4로, v2에서 v4로 마이그레이션을 테스트해야합니다.

+0

속성을 추가 한 엔티티의 해시가 내 모델의 버전 3과 4가 다른 것을 분명히 볼 수 있습니다. 귀하의 대답을 바탕으로, 나는이 사건에 대한 가벼운 이전에만 의존 할 수없는 것 같습니다. 맞습니까? – amb