2011-03-15 6 views
0

NSManagedObjectサブクラスを複数のCore Dataエンティティにすることは可能です。例えば、Thingというクラスは、VegetableBlanketが遺産を共有しないようにデータがモデル化されている場合でも、エンティティVegetableBlanketを表すことができます。複数のCore DataエンティティにNSManagedObjectサブクラスを使用する理由がありますか?

アップルのエンジニアが合理的な理由でこれを行ったと仮定します。しかし、複数のエンティティに1つのクラスを使用することが有用であるか賢明であるかという単一の状況について考えることはできません。エンティティへのクラスの1対1マッピングは、唯一の実用的な使用例のようです。

このデザイン決定の根拠は何でしょうか?

答えて

1

エンティティが同じキーを持つ限り、それらを表すために同じNSManagedObjectサブクラスを使用できます。

これは、NSManagedObject自体が、その関連ストレージを使用してどのエンティティも表すことができるように設計されているためです。サブクラス化しなければ、データモデル内のさまざまなエンティティのそれぞれを表すNSManagedObjectクラスのインスタンスになります。

NSManagedObjectサブクラスはそれほど大きな変更を行いません。サブクラスで定義されたプロパティは、実際にはNSManagedObjectベースクラスの関連ストレージに関するラッパーです。これは、primativeValueForKey:でアクセスするものです。サブクラスは、データモデルそのものが提供できない簡単なアクセスとカスタマイズされた動作を提供するための便利な機能ですが、NSManagedObjectsの柔軟性は保持されます。

エンティティの名前を指定すると、それらを表現するために同じクラスを安全に使用することができますが、それ以外の方法で違いがある場合は、無謀です。

関連する問題