2011-08-11 8 views
0

リリースされたアプリケーションのコアデータモデルの古いバージョンがあります。今、次のバージョンのアプリケーションでは、コアデータモデルを新しいモデルに移行しています。モデルの新しいバージョンに実際に移行する前に古いモデルから属性値を取得する方法があるか、または移行が行われるかどうかを知る方法が存在する可能性があります。コアデータのバージョン管理と移行

答えて

2

移行すると、Core Dataは実際に既存の値を移動します。プロパティの追加や削除など、比較的単純な移行を行っている場合、コアデータは可能な限りシームレスに移動するために最善を尽くしています。多くの場合、新しいモデルを設定する以外の変更は必要ありません。詳細については、my answer hereを参照してください。

+0

+1マイグレーションは、実際には、新しいバージョンのデータモデルによって指定された新しい構造に既存の永続ストアを書き換えるプロセスです。 – TechZen

0

はい、可能です。

古いモデルから属性値を取得するには、カスタムエンティティ移行ポリシー(NSEntityMigrationPolicyサブクラス)を作成する必要があります。次に-createDestinationInstancesForSourceInstance:entityMapping:manager:error:では、ソースインスタンスを受け取ります。ソースインスタンスからターゲットインスタンスを作成する方法は完全にあなた次第です。

あるストアがストアコーディネーターモデルと互換性があるかどうかを確認する方法があります:-[NSManagedObjectModel isConfiguration:compatibleWithStoreMetadata:]

関連する問題