2

私はかなり複雑な Core Data マッピングの問題に苦しんでおり、頭を悩ませているようです。基本的に、文字列である属性を持つ管理対象オブジェクトのバージョンがあります。この文字列は、多くのオブジェクトで同じです。同じなので、属性「名前」を持つ単一のエンティティになるように変更するのが理にかなっていると思いました。

entity.attribute は、attribute と name の両方が文字列である entity.newObject.name になる必要があります。

問題を複雑にするために、現在多くのエンティティに分割されている属性を、エンティティの単一のインスタンスにしたいと考えています。さらに、新しいエンティティは、newObject.name に一致する属性を持つオブジェクトに対して 1 対多の関係を持つ必要があります。

Core Data でモデルをマッピングすることでこれを行う方法はありますか? 自動移行が問題外であることは理解しています。

私はこれから行きたい:

現行モデル図

これに:

希望モデル図

特定のセッションで特定のパズルの種類に一致する時間のフェッチ要求を高速化するためにこれを行っています。-[NSSet intersectSet] は、個々の時間の puzzleType 属性を文字列と比較するよりもはるかに高速であると考えられています。マッピングモデルまたはプログラムを使用して、これを行うにはどうすればよいですか?

4

1 に答える 1

0

自動移行を使用できますが、マッピングを自動的に推測することはできません。

高レベルのタスクは次のとおりです。

  1. 新しいモデル バージョンを作成します。
  2. 必要に応じて新しいモデルを構成します。
  3. 新しいモデル バージョンを現在のバージョンとして設定します。
  4. 古いバージョンから新しいバージョンへのマッピング モデルを作成します。ここで、どの $source.attributes がどの新しい属性にマップされるかを設定します。
  5. 永続ストア コーディネーターを構成するときに、NSInferMappingModelAutomaticallyOption オプションを NO に設定します。
  6. NSMigratePersistentStoresAutomaticallyOption オプションを YES のままにします。移行マネージャーを使用して移行の進行状況を表示する場合にのみ、これを NO に設定します。

これらの項目について詳しい説明が必要な場合はお知らせください。

于 2012-12-03T11:37:25.913 に答える