1

VIPER アーキテクチャと Generics プロトコルについて興味深い質問がありました。

プレゼンターとインタラクターは (データのフェッチと受信のために) 多くの通信を行っているようですが、インタラクターの「出力」機能は常に同じです。

何かのようなもの:

func dataFetched(object: JSONObject)

そして、10個のモジュールがある場合、変更されるJSONObjectのみでこの関数が10倍になります...

次のようなものを使用することは可能ですか

protocol Ouput {
  associatedType Object
  func dataFetched(object: Object)
}

そして、プレゼンターでオブジェクトのタイプを選択しますか?

4

1 に答える 1

2

JSONObject が Entity プレゼンターである場合、それについて知る必要はありません。代わりに、インタラクターは、ViewModel に変換できる多形態型を返す必要があります。そして、プレゼンターはこの ViewModel をビューに渡すことができます。したがって、インタラクターの出力は次のようになります。

func didFetched(object: ViewModelConvertible)
于 2018-03-08T14:33:20.677 に答える