RxSwift设置下一个可观察的下一个可观察值,不起作用

问题描述 投票:0回答:1

我是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 ...

ios rx-swift
1个回答
0
投票

这里有两个问题,都由相同的编程错误,以及对处理袋生命周期的错误管理造成的。

© www.soinside.com 2019 - 2024. All rights reserved.