2016-10-25 3 views
0

私はモデルVersionを持っています。エンティティpassPhraseVersionは、モデルの新しいエンティティpassPhraseに移行する必要があります。宛先エンティティのモデルが作成されたCoredataのエンティティを移行する方法

しかし、Homeモデルは新しいバージョンのデータベースに導入されました。古いxcdatamodelには存在しませんでした。

Version.passPhrase to Home.passPhrase 

答えて

1

CoreDataの移行のゴールデンルールは - カスタムの移行を犠牲にしないでください。 :)

軽量の移行を使用して新しいエンティティを追加し、移行スクリプトを使用してデータを移動する方法です。

Versionクラス定義からpassPhraseプロパティを削除することはできますが、古いデータにはまだアクセスできるように、現在はモデルに残しておく必要があります。これは、すべてのユーザーが新しいバージョンにアップグレードされたことを確信しているとき、または永遠にそこに残すことが確実なときに、将来、いつでもクリーンアップできます。ただ[version valueForKey:@"passPhrase"]を使用して、一度同じよう[version setValue:nil forKey:@"passPhrase"]

出て、それは明らかにコピーコピー時に既存の値にアクセスするには

0

コアデータでは、エンティティ/モデルマッピングの変更は軽量移行の対象にはなりません。 NSMigrationManagerをサブクラス化し、カスタムNSEntityMigrationPolicyを実装することで、手動で処理する必要があります。

アップルでは、​​この件に関する資料をほとんど提供していません。Custom Core data migrationの詳細な例を確認してください。これが役立つことを願っています。

関連する問題