我是ios和rxswift的新手。尝试为新应用创建mvvm架构。
如果在调用appStartNetwork.fetchApp()之前设置了可观察的isSuccess值,则可以观察该值。但是当我接下来在fetchApp()中设置isSuccess值时,无法触发viewcontroller中的Observer]]
怎么了?
ViewModel
class SplashViewModel { var isSuccess = PublishSubject<Bool>() var isLoading = PublishSubject<Bool>() private let bag = DisposeBag() func fetchAppStart() { self.isLoading.onNext(true) let appStartNetwork=NetworkProvider.shared.makeAppStartNetwork() appStartNetwork.fetchApp().subscribe(onNext: { [weak self] apiResult in switch apiResult{ case let .success(response): //some codes self?.isLoading.onNext(false) self?.isSuccess.onNext(true) break case let .failure(errorContent): break } },onError:{ err in self.isLoading.onNext(false) self.isSuccess.onNext(false) }).disposed(by: bag) } }
查看控制器
func getAppStart(){
let splashVm=SplashViewModel()
let disposeBag = DisposeBag()
splashVm.isSuccess.subscribe(onNext: { (ok) in
if(ok){
print("splash success")
self.navigateMain()
}else{
self.showAlert("splash fail")
}
},onError:{ err in
self.showAlert(err.localizedDescription)
}).disposed(by: disposeBag)
splashVm.fetchAppStart()
}
我是ios和rxswift的新手。尝试为新应用创建mvvm体系结构。如果在调用appStartNetwork.fetchApp()之前设置了可观察的isSuccess值,则可以观察该值。但是当我设置isSuccess ...
这里有两个问题,都由相同的编程错误,以及对处理袋生命周期的错误管理造成的。