1

我有一个关于 VIPER 架构和泛型协议的有趣问题。

看起来 Presenter 和 Interactor 通信很多,(用于获取和接收数据),但 Interactor 的“输出”功能将始终相同

就像是:

func dataFetched(object: JSONObject)

如果你有 10 个模块,你将拥有这个函数的 10 倍,而只有 JSONObject 会发生变化......

是否可以使用类似的东西

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

并在presenter中选择Object的类型?

4

1 回答 1

2

如果 JSONObject 是 Entity Presenter 不应该知道它。相反,interactor 应该返回可以转换为 ViewModel 的多态类型。然后演示者可以将此 ViewModel 传递给视图。因此交互器输出可能如下所示:

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