2010-11-29 7 views
5

コアデータアプリケーションがあり、コアデータモデルを移行(アップグレード)しています。新しいバージョンを作成するたびに、各バージョンのマッピングモデルが作成されます。 今は16バージョンあり、このようなマッピングモデルがあります。 1to2.xcmappingmodel 2to3.xcmappingmodel 3to4.xcmappingmodel ...など。最大16複数のバージョンのコアデータを移行する

これはうまくいきますが、あるユーザーがバージョン10のデータファイルを持ち、バージョン16のアプリケーションを更新すると問題が発生します。コアデータが自動的に10から16にアップグレードされると思った「欠落マッピングモデル」と表示されるエラーが表示されます。マッピングモデルが正しいかどうかを確認するために、私はバージョンごとに1つずつ(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]){ 

誰もがこれをアップグレードする方法を知っていますか? ありがとうございます。

答えて

1

現在のバージョン(おそらくv1)から現在のバージョンに移行しようとします。 3つのバージョンがある場合、v1-v2、v2-v3、v1-v3のマップが必要です。 16種類のバージョンがすべて出荷されていますか? 新しい移行マップの作成を開始する必要がある場合は、事前に試していなければ自動移行を有効にする価値があります。私はそれがあると思う:

[dict setObject:[NSNumber numberWithBool:YES] forKey:NSInfersMappingModel];

しかし、あなたはそれを再確認する必要があります。

+1

はい悪いニュースの運び手であることが申し訳ありませんが、あなたに感謝...私はちょうどそれはマーカスZarraコアデータブックに...彼は余分を記述することなく、次の各モデルから移行する大きな手順を書きましたマッピングモデル。ありがとう、NSINfersMappingModelをチェックするつもり! –

+0

InfersMappingModelが機能しました!ありがとう! –

+0

オーバーヘッドが非常に急速に増加するため、データマイグレーションを最小限に抑えてください(各バージョンから現在のバージョンへの各バージョンのモデルのマッピング)。また、あるバージョンから次のバージョンへの自動移行を使用すると、しかし、あなたのモデルはバージョン16から21までは十分に変化するので、違いを計算することができません。あなたがそれを整理してうれしい! – MCannon

関連する問題