【发布时间】:2019-11-15 22:20:36
【问题描述】:
我应该将触发加载的代码放置在我的应用中显示的正确位置。
这样做是正确的吗?因为它在屏幕上显示一些东西,所以它适合作为 UI 逻辑
class ViewController: UIViewController {
func fetchData() {
showLoading()
interactor?.fetchData()
}
}
还是在交互器上?因为这是一个业务逻辑。例如,每次发出请求时,我们都应该显示加载。 View 只知道如何构造加载,而不知道何时显示。
class Interactor {
func fetchData() {
presenter?.presentLoading(true)
worker?.fetchData() { (data) [weak self] in
presenter?.presentLoading(false)
self?.presenter?.presentData(data)
}
}
}
同样的问题适用于 MVVM 和 MVP。
【问题讨论】:
-
由于Interactor独立于任何视图逻辑,并且Presenter负责准备/处理UI,因此最好通过Presenter控制加载视图。因此,您应该创建用于在视图中显示和隐藏加载视图的函数,并在需要时从演示者调用它。 MVP 或 MVVM 也是如此。
-
但是只有在我的数据完成获取时才会调用演示者。甚至不再需要显示加载了
-
如何触发Interactor中的数据获取?它是由演示者调用还是由其他事件调用?
-
在worker上获取数据
标签: ios swift design-patterns mvvm clean-architecture