4

既存のコア データ セットがあり、それにエンティティを追加したいと考えています。既存のユーザーを新しいモデルに移行するために新しいエンティティを追加した後、軽量移行を使用できるかどうかについて少し混乱しています。

現在のモーダルは次のとおりです(エンティティを表示するだけです):

Story 1toMany-> Sentences

私は欲しい:

Story 1toMany-> Sentences 1toMany-> Media

軽量の移行ツールを使用してこれを行うことはできますか?

ドキュメントを読みました:

Core Data が推測されたマッピング モデルを生成できるようにするには、変更が明らかな移行パターンに適合する必要があります。次に例を示します。

新しい属性の単純な追加 属性の削除 オプションではない属性がオプションになる オプションの属性がオプションでなくなり、デフォルト値を定義する エンティティまたはプロパティの名前を変更する

しかし、この質問は、軽量の移行がエンティティの追加で引き続き機能することを示唆しているようです。新しいメディア エンティティはオプションであるため、実際にどのように問題になるかわかりません。

4

2 に答える 2

6

はい、軽量移行を使用できる可能性があります。私の経験では、CoreData モデルに変更を加える前に、[エディタ] メニューの [モデル バージョンを追加...] を使用することをお勧めします。このように、マッピングする前後のシナリオがあります。次に、新しいモデルを現在のモデルとして設定する必要があります。(コア データ モデルにエンティティを追加できるようになりました。正しいモデルで作業していることを確認してください。)

最後に、PersistentStoreCoordinator を初期化するためのオプションを渡す必要があります。

NSError *error = nil;
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool: YES],NSMigratePersistentStoresAutomaticallyOption,[NSNumber numberWithBool:YES],NSInferMappingModelAutomaticallyOption, nil];
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]) {...
于 2012-08-15T20:23:00.667 に答える
5

wwdc 2010 のコア データ ビデオ「マスタリング コア データ」を確認してください。特定のケースの移行について説明しています。簡単に言えば、はい、軽量の移行を使用できます。NSPersistentStoreCoordinator インスタンスを初期化するときにオプション ディクショナリを渡すだけです。

NSDictionary *dictionary=[NSDictionary dictionaryWithObjects:@[ [NSNumber numberWithBool:YES], [NSNumber numberWithBool:YES]] forKeys:@[ NSMigratePersistentStoresAutomaticallyOption, NSInferMappingModelAutomaticallyOption]];
于 2012-08-15T18:41:18.933 に答える