16

3つのエンティティを持つF1レースのデータモデルがあります。

  • RacingActor:抽象エンティティ
  • パイロット:RacingActorから継承
  • チーム:RacingActorから継承

ここに画像の説明を入力してください

これらのエンティティを表すサブクラスを生成した場合NSManagedObject、生成されたコードはこの設計をまったく表していません。

  • すべてが継承しますNSManagedObject
  • RacingActorをインスタンス化することを妨げるものは何もありません
  • PilotのチームプロパティはNSManagedObject、Teamではなくタイプです。

これは予想される動作ですか?Xcodeによって生成されたコードを修正する必要がありますか?私は何かが足りないのですか?

ところで、私はXcode4.3.3を使用しています

4

1 に答える 1

12

コア データは、オブジェクト リレーショナル マッピング ライブラリです。昔は、WebObjects の一部である Entreprise Object Framework と呼ばれていました。

そうです、Core Data によって管理される永続オブジェクトの基本オブジェクトはNSManagedObjectであり、それらを使って好きなことを行うことができます。

あなたの例では、チームとパイロットは共通のテーブルを共有し、クエリを使用してチームとパイロットを一度に取得できます。それがアイデアです。

Objective-C の継承ツリー (カスタム クラスを使用する場合) は、定義したモデルを反映できますが、そうする必要はありません。カスタム クラスを作成して、それをカスタムおよびクラスRacingActorの基本クラスとして使用するか、モデルに および オブジェクトに使用するように指示することができます。必要に応じて、完全に無関係な基本クラス (直接的または間接的に親である場合) を定義することもできます。TeamPilotRacingActorTeamPilotNSManagedObjectTeamPilot

その後、コントローラーまたはカスタム データ クラスのいずれかで、ビジネス ロジックに必要な特定の動作を自由に実装できます。

于 2012-07-09T16:48:30.787 に答える