gpt4 book ai didi

ios - Clean Architecture Swift 中在哪里触发加载

转载 作者:行者123 更新时间:2023-11-29 05:18:52 38 4
gpt4 key购买 nike

我应该将触发加载并显示在我的应用程序中的代码放在正确的位置。

查看时的做法正确吗?因为它在屏幕上显示一些内容,所以它适合作为 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。

最佳答案

这完全取决于你。我正在展示使用 Observable 进行加载。在我的 viewModel 中有一个名为 action 的枚举:

enum action {
case success(count:Int)
case deleteSuccess
case loading
case error
}

和一个 Action 类型的 Observable :

var actionsObservable = PublishSubject<action>()

然后,在获取数据之前我调用actionObservable(loading)的onNext方法

并在 viewController 中订阅它:

vm.actionsObserver
.observeOn(MainScheduler.instance)
.subscribe(onNext: { (action) in
switch action {
case .success(let count):
if(count == 0){
self.noItemLabel.isHidden = false
}
else{
self.noItemLabel.isHidden = true
}
self.refreshControl.endRefreshing()
self.removeSpinner()
case .loading:
self.showSpinner(onView : self.view)
case .error:
self.removeSpinner()

}
}, onError: { (e) in
print(e)
}).disposed(by: disposeBag)

关于ios - Clean Architecture Swift 中在哪里触发加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58885423/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com