2012-03-26 6 views
1

カスタムNSManagedObjectクラスによって管理されるいくつかのエンティティがあります。それらは、異なるView Controllerにリストされています。マネージオブジェクトサブクラスは、共通の属性を保持する一般的な抽象スーパークラスを持っています(NSStringとしてtitle、BOOLとしてfavoriteとしましょう)。私はお気に入りのためのビューコントローラを持っています。まあ、favorite属性を持つすべてのエンティティが真です。お気に入りには異なるクラスがあるので、それらの管理対象オブジェクトの抽象スーパークラスの適切なサブクラスからView Controllerクラスを派生(または取得)するのは通常ですか?ここでMVCを壊していますか?iOS MVC:モデルからビューコントローラクラスを取得しますか?

更新

セルジオのためのいくつかの明確化:のは、私は抽象スーパーAnimalCatDogのようなサブクラスを持っているとしましょう。これらのインスタンスは、個々の動物(名前を持つ動物のような)を表します。それから私はCatsViewControllerとDogsViewControllerを持っています。適切なAnimalサブクラスのインスタンスをリストします。私はまた、管理オブジェクトの単一のインスタンスを表すCatDetailsViewControllerとDogDetailsViewControllerを持っています。それから、私は両方の猫を表に表示するFavoritesViewControllerを持っています。&犬をテーブルに入れました。行をタップすると、ユーザを適切なCatDetailまたはDogDetailビューコントローラに移動させたいと考えています。これはどこに質問が来るのですか?私は、管理オブジェクトのインスタンスからView Controllerのクラスを派生/取得できますか?私はこれを実現するための他の選択肢も開いています。

+0

私は、FavorViewControllerがサブクラス化するAnimalViewControllerを持っています。しかし、あなたのデザインはうまく見えます。 – fbernardo

答えて

1

EDIT(コメントの後):

これはIMO、完全にMVC準拠しています。 FavoritesViewControllerは、あなたが対処しているオブジェクトを伝え、正しい特定のコントローラ(CatDetailまたはDogDetailビューコントローラ)を呼び出すことを担当します。それでもアプリやモデルのビジネスロジックに関する知識は埋め込まれており、ビューは適切に分離されています。最終的には、FavoritesViewControllerDogsViewController/CatsViewControllerの間に大きな違いはありません。唯一の違いは、FavoritesViewControllerが1つだけではなく、約2種類のデータを知っていることです。

OLD ANSWER:

私は、私は完全にあなたのシナリオを理解していないけど、私が理解から、私はあなたが多分少しにカプセル化の原則を破っていると言うでしょう。ファクトリを使用している場合、またはモデル情報で特定のコントローラベースをどのようにインスタンス化するのかについて、どのようにしているのかが分かります。

MVCに関して、私はあなたがそれを具体的に破るわけではないと思います。特定のコントローラークラスを作成することを「コントローラー」が担当している限り、その境界内でプレイしています。

私はあなたのしていることを非常に部分的に理解しているので、塩の粒でこれを取る。いずれにせよ、それが助けてくれることを願う。

+0

あなたのご意見ありがとうございます。質問の更新をご覧ください。) – Eimantas

関連する問題