1

この質問のタイトルは重複しているように見えるかもしれませんが、私の問題とは異なりますが、コア データの移行に関連しているため、私の問題をよくお読みください。

約 2 か月前に Apple ストアにアプリの最初のバージョンをアップロードし、先月 2 番目のバージョンをアップロードしました。

今私が得ている問題は、新しいバージョンには既存のエンティティにいくつかの属性が追加されているため、コアデータが原因で新しいバージョンがクラッシュすることです。

当時、私はそのような移行プロセスに気づいていませんでしたが、今はアプリが稼働しているため、どうすればよいかわかりません。

互換性のあるバージョンのコア データが必要な新しいバージョンをアップロードする必要があります。これを案内してください。

-(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];}

null の mappingModel を取得しています...

ありがとうございます

4

0 に答える 0