1

此问题标题可能看起来重复,但请仔细阅读我的问题,因为它不同,但与核心数据迁移有关。

大约 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];}

现在得到空映射模型...

谢谢潘卡伊

4

0 回答 0