2016-04-10 5 views
1

抽象エンティティがXCode 7のグラフエディタに表示されないようにする手段はありますか?私のエンティティはすべて超抽象エンティティを継承しており、抽象エンティティがその子クラスへの継承を示す矢印付きのグラフ上に表示されるため、グラフが乱雑です。これは変更できますか?XCode:コアデータグラフから抽象エンティティを除外します

+0

私はそうは思わない。実際の機能の面であなたを提供しているこれらの抽象的なエンティティは何ですか? – Wain

+0

ありがとうございます。抽象エンティティは、その子属性によって共有される属性を提供する。 NSManagedObjectサブクラスには、これらすべてのタイプのエンティティに共通する機能を支援するために追加した便利なメソッドもあります。 – mashers

+1

@mashersエンティティ継承なしでクラス継承を引き続き使用できます。モデルエディタでは、各エンティティに共通の属性を含めます(抽象エンティティをモデル化しません)。しかし、クラス定義では、各サブクラスを抽象エンティティのクラスから継承するように修正します。 – pbasdf

答えて

1

いいえ、これは変更できません。他のプログラムでは、図を再描画することしかできません。別の問題へ

しかし、この問題はポイント:あなたは、エンティティのほとんどが1つのスーパー親エンティティから継承されている場合は、これらはすべて同じSQLiteのテーブルに格納されることに注意してください。これは潜在的にパフォーマンスの問題につながる可能性があり、いずれの場合も、バックグラウンドでリレーショナルデータベースによって表現されるオブジェクトグラフを持つことによって得られる効率の大部分を排除する可能性があります。

たとえば、すべてのエンティティにsyncフィールドがある場合は、この属性をすべてのエンティティに追加する方がよい場合や、ステータスを同期させる別の方法を見つける方がよい場合があります。

+0

ありがとうございます。私は関係を追うことで手書きで図を描きました。抽象エンティティクラスから継承するエンティティが同じテーブルに格納されることは考えられませんでした。すべてのエンティティに属性をコピーし、NSManagedObjectサブクラスのメソッドではなく、メソッド内で 'self'を使用するのではなく)エンティティをパラメータとして取る簡易メソッドを変更することで、この戦略を再考します。しかし、パフォーマンスは今のところ完全に適切だと思われますので、私は耳で再生します。 – mashers

+0

Appleは常にアプリケーションで継承を使用します.1つのフェッチから複数のエンティティを返すことができます。 Notesでは、コンテナで強力なものである親エンティティをフェッチしてアカウントとフォルダを取得します。モデルを、リレーショナルデータベースのように考えるのではなく、UIでどのように表示するかによってデザインします。 – malhal

+0

@malhalそうですが、ノーツ・アプリケーションは、エントリが非常に少なく、スキームがうまく拡張されないため、良い例ではありません。誰も100.000秒のノートを持たないでしょう。おそらく100秒もありません。それは、トレードオフを説明するための優れた例です。 – Mundi

関連する問題