코어 데이터 애플리케이션이 있고 핵심 데이터 모델을 마이그레이션 (업그레이드)했습니다. 새 버전을 만들 때마다 각 버전에 대한 매핑 모델을 만듭니다. 지금은 16 가지 버전이 있으며 다음과 같이 매핑 모델을 가지고 있습니다. 1to2.xcmappingmodel 2to3.xcmappingmodel 3to4.xcmappingmodel ... 등. 최대 16코어 데이터의 여러 버전으로 마이그레이션
이 작업은 정상적으로 작동하지만 한 사용자가 버전 10의 데이터 파일을 가지고 있고 버전 16의 응용 프로그램을 업데이트 할 때 문제가 발생합니다. 코어 데이터가 자동으로 10에서 16으로 업그레이드되지만, "Missing Mapping Model"오류가 나타납니다. 매핑 모델이 올바른지 확인하기 위해 각 버전을 하나씩 (10-11, 11-12 등) 업그레이드하고 작동합니다 ... 여기 내 코드가 있습니다.
이 코드와 모델 버전을 지정합니다
NSBundle *modelWrapper = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"TaskApp_DataModel" ofType:@"momd"]];
NSString *modelPath = [modelWrapper pathForResource:@"TaskApp_DataModel 16" ofType:@"mom"];
NSLog(@"%@",modelPath);
managedObjectModel = [[NSManagedObjectModel alloc]initWithContentsOfURL:[NSURL fileURLWithPath:modelPath]];
그리고 여기 마이그레이션 자동 옵션을 정의
는NSURL *url = [NSURL fileURLWithPath: [applicationSupportDirectory stringByAppendingPathComponent: @"storedata-sql"]];
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:[NSNumber numberWithBool:YES] forKey:NSMigratePersistentStoresAutomaticallyOption];
if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:url
options:dict
error:&error]){
사람이를 업그레이드하는 방법을 알고 있나요? 감사합니다.
예 ... 난 그냥 마커스 Zarra 코어 데이터의 책에서 그것을 발견 ... 그는 추가로 작성하지 않고 다음에 각 모델에서 마이그레이션 할 큰 절차를 쓴 감사합니다 나쁜 소식의 부활이 될 유감 매핑 모델. NSINfersMappingModel을 확인하려고합니다! –
InfersMappingModel이 작동했습니다! 감사! –
오버 헤드가 매우 빠르게 증가함에 따라 데이터 마이 그 레이션을 최소로 유지하십시오 (각 변경 사항에 대한 모든 버전의 모델을 현재 버전으로 매핑). 또한 한 버전에서 다음 버전으로 자동 마이그레이션을 사용할 수 있음을 유의하십시오 모델은 버전 16에서 21로 변경 될 수 있으므로 차이가있어 차이를 계산할 수 없습니다. 다행 이군. – MCannon