2017-03-06 11 views
0

私はiOSを開発するためにmvcデザインパターンを使用していましたが、私はこれを正しく実行しているのだろうかと思っていました。私はMVCについて多くのことを読んだことがあります。私の考え方では、表示される、またはビューの特性を変更するすべての情報はモデルに保存されます(これは私のVCの知識です)。したがって、MVCの設計では、通常、ユーザーが操作する各ビューにmvcを作成し、App内のすべての「共有」情報を管理するモデルオブジェクトと、いくつかのデータを保持する1つのシングルトン( 'UserSession'クラス)を持っています。例:MVCデザインパターン - モデル設計

私のHomeViewControllerでは、私のオブジェクトのステータスに応じて異なるサブビューがあります。このMVC(自宅)では、私はhomeSubviewタイプとそのデータを制御するモデルとして「プレゼンター」を持っています。私は別のモデルオブジェクト(ユーザーのような、またはオブジェクト)から情報を取得する必要があるとき、トリック(この場合)を行う私の 'プレゼンターモデル'であり、プロジェクト内の別のMVCで同じことが起こります。

コントローラーが私にはよさそうだ、その後

だから、見る[更新]コントローラ[への「応答」](必要に応じて他のモデルと通信)モデルを、[に尋ねる]:私の方法は何かに似ています私はmvcパターンを正しく使用していないようになった。誰かが意見を与えることはできますか?

事前に:英語についてはごめんなさい。そして、私はどんな提案/助けにも感謝します、ありがとう!

答えて

1

MVCではなくMVVM(C)パターンのように聞こえるが、私はあなたが示唆しているものは間違っているとは思えない。

だからiOSの中で私たちはほとんどのビューコントローラを使用するように強制されているので、私たちはここに余分な(C)が必要ですが、基本的に:

  • M(モデル)、これらは、あなたのデータモデルを表している必要があります。 class Model { var firstName: String var lastName: String .... }
  • V(ビュー)、これはデータ を画面に描画し、表示する、プレゼンテーションを処理する必要があります class View: UIView { let fullNameLabel = UILabel() }
  • VM(ビューモデル)あなたはどのようなビューのニーズに合わせて、モデル内のデータを適応させる場合には、これは。同じモデルクラスのデータを表示するビューが複数ある場合、新しいビューモデルを追加するだけで、多くのヘルパーメソッドを使用してモデルを乱雑にするのではなく、必要なデータに適応する必要があるからです。

そして、明らかに、我々はまた、全体のものを調整し、コントローラを持っている:)

これは、あなたがやっているより多くの何であるように、あなたのpresenterは、ビューモデルであるところそれは、私には感じています。

これは、ビューやモデルに実際に属していない機能をカプセル化するのに役立ちます。フルネームは、技術的にはデータモデルの一部ではなく、レンダリング/プレゼンテーションを行うこともできません。そのため、アダプタ/プレゼンタ/ビューモデルに移動します。

これはあなたの助けになるでしょうか?あなたにもう一度ご意見やご質問がある場合は、他の情報のコード例を含めてください。

+0

もう一度ありがとうございました!実際、私はViperデザインにもっと慣れています。そして私は後でバイパーに会うだけです.. https://www.objc.io/issues/13-architecture/viper/ しかし、私はmvcを維持しようとしている鉄です。 – Gehlen

関連する問題