0

ユーザーが新しいモデル バージョンで新しいバージョンにアップグレードするときに、すべてのエンティティをリモートで使用したいと考えています。例えば、

アプリ バージョン 1.0 & モデル バージョン 1 テーブル X テーブル Y

アプリ バージョン 1.1 & モデル バージョン 2 にアップグレードすると、2 つのテーブルが追加されます テーブル H テーブル K

テーブル X と Y は削除する必要があります。

現在のデータ モデルのバージョンを認識し、これらの削除アクションを実行する方法は?

4

1 に答える 1

1

カスタム移行ポリシーとマッピング モデルを使用して移行を行います。

  1. モデル バージョン 1.0 にはテーブル A があり、バージョン 1.1 にはテーブル B があり、テーブル A はありません。
  2. ソースとしてのバージョン 1.0 から宛先としての 1.1 へのマッピング モデルを作成します。
  3. NSEntityMigrationPolicy のサブクラスである新しいファイルを作成しますが、コードでトリッキーな変換を行う予定がない場合は、メソッドを実装する必要はありません。
  4. マッピング モデルにはエンティティ マッピングがあり、テーブル A をソースとして、テーブル B を宛先として設定します。タイプは自動的にカスタムに設定されます。
  5. カスタム ポリシー フィールドに NSEntityMigrationPolicy サブクラス名を入力します。何もオーバーライドしていないため、NSEntityMigrationPolicy 自体を使用できる可能性がありますが、私は試していません。
  6. 属性マッピング タブに、テーブル A のすべてのフィールドの値式フィールドが表示されます。各フィールドに $source.attributeNameInYourOldTableGoesHere と入力します。
  7. 永続ストアを初期化するときに、NSInferMappingModelAutomaticallyOption を NO に変更し、NSMigratePersistentStoresAutomaticallyOption を YES に変更します。

よろしくお願いします、

スヴェン。

于 2012-05-25T15:14:02.870 に答える