2011-06-22 9 views
3

いくつかのカスタムコードを持つ私のアプリケーションのマッピングモデルを作成しようとしています。したがって、私はxcmappingmodelを作成し、私はNSEntityMigrationPolicyをサブクラス化し、私のxcmappingmodelのカスタムポリシーは実行されません

createDestinationInstancesForSourceInstance 

メソッドを実装しました。さらに、私のマッピングモデルのカスタムポリシーフィールドにクラス名を入力しました。残念ながら私のコードは決して呼び出されません(ブレークポイントとログを試しました)。私の店は次のオプションで作成されます:

NSMigratePersistentStoresAutomaticallyOption: YES 
NSInferMappingModelAutomaticallyOption: YES 

私はXCode 4.0.2を使用しています(XCode 4.2でもテスト済み)。他のすべての「軽量」移行はスムーズに実行されています。カスタム移行を実行するには何が必要ですか?

答えて

2

モデルのバージョンはどのように異なりますか?コアデータは、ストアがモデル(NSManagedObjectModelオブジェクトとして表される)と互換性がないことを認識しなければなりません。これは、各エンティティのプロパティのハッシュ値を作成し、これらの値をハッシュして各エンティティのハッシュ値を表すことによって行われます。これらの値が変更されない場合、モデルは区別できません。

データモデルの変更について、より多くの情報が必要になります。

+0

さて、それを知りませんでした。実際には、移行メカニズムを利用して基本的なディレクトリ構造を改善する必要があるため、問題が発生する可能性があります(各レコードには便宜的に名前を変更する必要があります)。実際のモデルの変更がないので、移行を強制する方法はありますか?または、1つの架空のフィールドを追加して、別の移行でそれを削除する必要がありますか? – sippndipp

+1

これは問題の可能性があります。想像上のフィールドを追加すると、問題が解決する場合があります。これは少なくともあなたのマッピングを引き起こすはずです。 – rsobik

+0

これは問題でした!助けてくれてありがとう。 – sippndipp

関連する問題