問題タブ [viper-architecture]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
628 参照

ios - cellForRowAtIndexPath で多くの Switch ケース

ハードコードされたデータを使用したテーブル ビューの設定について質問があります。DATA MODELレイヤーからではなく、ハードコードされた情報として保存されたデータを表示する必要がある場合、開発者は状況に直面することがあります。

つまり、たとえば、設定画面を作成すると、次のような UITableViewCell が存在する可能性があります。

CustomTableViewCellName - 構成データ: プレースホルダー名/姓、アイコン。

CustomTableViewCellPhone - 構成データ: 電話のプレースホルダー、アイコン。

CustomTableViewCellLogout - 構成データ: ログアウト/サインアウトのテキスト、アイコン。

3 つのテーブル ビュー セクションがあり、各セクションには、さまざまなケースの例として上で説明した 5 つの異なるセルが含まれているとします。

これらすべてのセルを

ご覧のとおり、ラベル、テキストビュー、画像ビューなどのデフォルトデータとして UITableViewCell に保存されるプレースホルダーとアイコン画像のみのデータモデルはありません。ここではモデルについては言いません。たとえば、ユーザーを保存するモデル USER についてです。名前、姓など。デフォルトのデータをどこかに、おそらく辞書に保存する必要があるということです。実際には、プレースホルダーは単なるプレースホルダーですが、TEXT があり、TEXT はデータです =)

この場合、ビューのデフォルト状態を構成するためのデータと、たとえばモデル USER として使用するデータがあります。

私が心配しているのは、大きなSwitchと非常に大規模なView Controllerがあることです。

indexPath.row を使用して、スイッチでセクションを表すいくつかのメソッドを作成したいと思います。

これらのメソッドを Interactor に移動すると、セルが返されます。Interactor はデータのみを準備し、Presenter を介して View にプッシュする必要があることを知っています。

たぶん私は問題を考えすぎています。VC に大きなスイッチを入れたくないだけです =) 正しい解決策がないことは理解しています。しかし、誰かがそれに直面したのかもしれません。

私の場合、データはデフォルトのセルであり、過負荷のView Controllerを防ぐためにどこかに設定したいと考えています。ええ、セルがデータであるというのはクレイジーに見えるかもしれませんが、構成用の 1000 行のコードを含む ViewControllercellForRowAtIndexPathもクレイジーです =)

0 投票する
4 に答える
2833 参照

ios - iOS VIPER: フォーム検証コードをどこに置くか?

私はクリーンな iOS アーキテクチャ VIPER に関する多くの記事を読み、主な目的である関心の分離を理解しています。

現在、プロジェクトに使用しています。モジュールがあり、それぞれビュー、インタラクター、プレゼンター、エンティティ、およびルーター (ストーリーボード付き) で分割されています。

モジュールがあります: Address とサブモジュール Add アドレス ページの追加。

したがって、UIViewController によって実装されたプロトコル ビューがあります。ビュー コントローラは、すべての弱い IBOutlet ラベルとテキスト フィールドを保持します (新しいアドレス フォーム用)。

住所フォームには、次のようないくつかのフィールドが含まれています。

  • 人の名字
  • 郵便番号
  • 電話
  • Eメール
  • 等...

私の場合、プレゼンターは、API 呼び出しを実行するインタラクターにユーザー インタラクションを依存するだけです。

しかし、API 呼び出しを実行する前に、無駄なネットワーク リソースの消費を避けるためにフォームを事前検証したいと考えています。

たとえば、次のことを確認する必要があります。

  • 空の場合はフィールドが必須であることをビューに伝えます...
  • 電子メールの形式を変更し、フィールドが無効であることをビューに伝えます...

私の質問は、フォーム検証コードをどこに置くことができますか?

その役割を担うべき VIPER コンポーネントはどれですか?

前もって感謝します!

0 投票する
3 に答える
748 参照

ios - 同様の機能を持つ 2 つのビュー コントローラー VIPER

現在、プロジェクトに VIPER アーキテクチャを実装しようとしていますが、いくつか質問があります。

私のアプリには2つのモジュールがあり、それらにはいくつかの同様の機能があります(どちらもimagePickerとサーバーにメディアをアップロードする機能を備えており、両方の画面でまったく同じように実装されています)。

私の質問は、この同様の機能を両方のモジュールで再利用するにはどうすればよいですか? 問題は、私の imagePicker には Interactor で宣言された多くのメソッドがあり、画像の選択とアップロード中にさまざまなイベントを処理することです (didUploadMediaFile()、didFailToUploadMediaFile()、uploadMediaFile() など)。

この機能を備えた 3 番目のモジュールを作成し、それから他のモジュールをサブクラス化する必要がありますか? または、もっと良い方法がありますか?

0 投票する
1 に答える
12911 参照

android - VIPER クリーン アーキテクチャを理解する方法

最近、VIPER クリーン アーキテクチャを発見し、このアーキテクチャを Android プラットフォームに適用するためのサンプル チュートリアルを探し始めました。しかし、私が見つけたのはサンプル プロジェクトだけで、私にはわかりにくかったので、簡単な例に従って VIPER の基本原理を理解したいと思います。上記に関する優れたチュートリアルを誰かが共有できるかどうか疑問に思っています。

0 投票する
3 に答える
3115 参照

objective-c - VIPER で別のモジュールにデータを送信できません

VIPER でモジュール A からモジュール B にデータを送信するにはどうすればよいですか? モジュール B の情報を持つルーター A を使用し、この情報をビュー コントローラー B またはプレゼンター B に送信しようとしています。これを行う最善の方法は何ですか?

0 投票する
2 に答える
625 参照

design-patterns - VIPER アーキテクチャの NSFetchedResultsController の場所はどれですか?

VIPERでは、MVC とは異なり、NSFetchedResultsController の役割と場所が明確に定義されていません。

インタラクターの上に置くのは正しいですか?