我有一个关于 VIPER 架构和泛型协议(protocol)的有趣问题。
看起来 Presenter 和 Interactor 通信很多,(用于获取和接收数据),但是 Interactor 的“输出”功能将始终相同
类似于:
func dataFetched(object: JSONObject)
如果你有 10 个模块,你将有 10 倍的这个功能,只有 JSONObject 发生变化......
是否可以使用类似的东西
protocol Ouput {
associatedType Object
func dataFetched(object: Object)
}
然后在presenter中选择Object的类型?
最佳答案
如果 JSONObject 是一个实体,presenter 不应该知道它。相反,交互器应该返回可以转换为 ViewModel 的多态类型。然后演示者可以将此 ViewModel 传递给 View 。因此交互器输出可能如下所示:
func didFetched(object: ViewModelConvertible)
关于swift - 具有通用协议(protocol)的 VIPER 架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49175446/