此问题标题可能看起来重复,但请仔细阅读我的问题,因为它不同,但与核心数据迁移有关。
大约 2 个月前,我在 Apple 商店上传了我的应用程序的第一个版本,然后在上个月上传了第二个版本。
现在我遇到的问题是我的新版本由于核心数据而崩溃,因为新版本包括在现有实体中添加一些属性。
当时我不知道这样的迁移过程,但现在我不知道该怎么做,因为我的应用程序已经上线。
我必须上传一个新版本,该版本必须具有兼容版本的核心数据。请指导我完成这个。
-(void)checkNeedForMigration{
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"ISB.sqlite"];
NSLog(@"database:%@",storeURL);
NSError *error = nil;
NSPersistentStoreCoordinator *psc = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
NSDictionary *sourceMetadata =
[NSPersistentStoreCoordinator metadataForPersistentStoreOfType:NSSQLiteStoreType URL:storeURL error:&error];
NSManagedObjectModel *destinationModel=[psc managedObjectModel];
BOOL pscCompatibile = [destinationModel isConfiguration:Nil compatibleWithStoreMetadata:sourceMetadata];
NSManagedObjectModel *sourceModel=[NSManagedObjectModel mergedModelFromBundles:nil forStoreMetadata:sourceMetadata];
NSMappingModel *mappingModel =[NSMappingModel mappingModelFromBundles:nil forSourceModel:sourceModel destinationModel:destinationModel];
NSMigrationManager *migrationManager=[[NSMigrationManager alloc]initWithSourceModel:sourceModel destinationModel:destinationModel];
NSDictionary *optionDic=[[NSDictionary alloc]initWithObjectsAndKeys:[NSNumber numberWithBool:YES],NSInferMappingModelAutomaticallyOption,[NSNumber numberWithBool:YES],NSMigratePersistentStoresAutomaticallyOption, nil];
BOOL ok=[migrationManager migrateStoreFromURL:storeURL type:NSSQLiteStoreType options:optionDic withMappingModel:mappingModel toDestinationURL:storeURL destinationType:NSSQLiteStoreType destinationOptions:optionDic error:&error];}
现在得到空映射模型...
谢谢潘卡伊