2011-10-04 4 views
0

내 앱에서 자동 라이트 웨이트 마이그레이션을 사용하려고합니다. 다음 단계를 수행했습니다.CoreData Automatic Lightweight Migration 오류

  1. 새 모델 버전 생성.
  2. 새 모델 버전 편집.
  3. persistentStoreCoordinator를 만들 때 NSMigratePersistentStoresAutomaticallyOption 및 NSInferMappingModelAutomaticallyOption 옵션을 YES로 설정하십시오.
  4. 현재 버전을 새 버전으로 설정합니다.

및 오류를 가지고 : 이유 = 아무 소용이 청소 나 제품 - 시도했습니다

을> "소스 저장소에 대한 모델을 찾을 수 없습니다." 아이디어?

편집 : 모델 세부 정보를 넣는 것을 잊었습니다.

두 개의 .xcdatamodel 파일이 있습니다. 첫 번째 엔티티, 이벤트 및 장소가 두 개 있습니다. 두 번째 Entity, EventDate 있습니다. 더 이상 코드에서 두 번째 .xcdatamodel을 사용하지 않지만 프로젝트에 파일을 남겨 두었습니다. 첫 번째 모델 파일에 새 엔티티 업데이트를 추가하려고합니다.

+0

새 모델을 새 모델로 추가 했습니까? 기존 모델에 새 버전을 추가해야합니다. – rckoenes

+0

@rckoenes 예, Xcode에서 편집기 -> 모델 추가를 선택하십시오. – jcm

답변

0

오류 ""소스 저장소에 대한 모델을 찾을 수 없습니다 "는 .xcdatamodel 파일이 원래 찾을 수없는 기존의 영구 저장소를 만드는 데 사용되는 것을 의미한다.

이 두 모델 파일을 시작 세웠 죠 (버전을 수는 응용 프로그램의 버전이 아닌 데이터 모델)입니다 :

oneEntityModelv1.xcdatamodel 
twoEntityModelv1.xcdatamodel 

... 그리고이 데이터 모델로 마이그레이션 할 :

threeEntityModelv2.xcdatamodel 

v2의 버전 마이그레이션을 수행하려면 세 가지 파일을 모두 포함해야합니다.

+0

이것을 보장하기 위해해야 ​​할 특별한 것이 있습니까? 새 모델을 추가 할 때 xcdatamodel 파일을 제거하거나 삭제하지 않았습니다. – jcm

0

문제는 우리 모델을 인스턴스화하기 위해 mergedModelFromBundles를 사용하고 있다는 것이 었습니다. 분명히 자동 가벼운 마이그레이션으로는 잘 돌아 가지 않습니다. 수정 된 내용은

  1. 사용하지 않은 xcdatamodel을 삭제하는 것입니다.
  2. 데이터베이스 파일을 삭제하십시오.
  3. 버전 남은 모델.