私はモデルVersion
を持っています。エンティティpassPhrase
のVersion
は、モデルの新しいエンティティpassPhrase
に移行する必要があります。宛先エンティティのモデルが作成されたCoredataのエンティティを移行する方法
しかし、Home
モデルは新しいバージョンのデータベースに導入されました。古いxcdatamodel
には存在しませんでした。
Version.passPhrase to Home.passPhrase
私はモデルVersion
を持っています。エンティティpassPhrase
のVersion
は、モデルの新しいエンティティpassPhrase
に移行する必要があります。宛先エンティティのモデルが作成されたCoredataのエンティティを移行する方法
しかし、Home
モデルは新しいバージョンのデータベースに導入されました。古いxcdatamodel
には存在しませんでした。
Version.passPhrase to Home.passPhrase
CoreDataの移行のゴールデンルールは - カスタムの移行を犠牲にしないでください。 :)
軽量の移行を使用して新しいエンティティを追加し、移行スクリプトを使用してデータを移動する方法です。
Version
クラス定義からpassPhrase
プロパティを削除することはできますが、古いデータにはまだアクセスできるように、現在はモデルに残しておく必要があります。これは、すべてのユーザーが新しいバージョンにアップグレードされたことを確信しているとき、または永遠にそこに残すことが確実なときに、将来、いつでもクリーンアップできます。ただ[version valueForKey:@"passPhrase"]
を使用して、一度同じよう[version setValue:nil forKey:@"passPhrase"]
コアデータでは、エンティティ/モデルマッピングの変更は軽量移行の対象にはなりません。 NSMigrationManagerをサブクラス化し、カスタムNSEntityMigrationPolicyを実装することで、手動で処理する必要があります。
アップルでは、この件に関する資料をほとんど提供していません。Custom Core data migrationの詳細な例を確認してください。これが役立つことを願っています。