首页 > 解决方案 > 将枚举与 BehaviorRelay 一起使用会在下游带来不同类型的值,并且无法处理

问题描述

我正在尝试使用 、 和 (这是一个枚举)来实现ViewModelUIBehaviorRelay状态State

在视图模型中:

class MyViewModel {
    ...
    let state = BehaviorRelay<State?>(value: nil)
    ...
}

观察 VC 的变化:

viewModel.state.asDriver().drive { state in
    // Problem is here. "state" seems to be of type Observable<State?> instead of actual State enum
}

以下是我如何看待来自驱动程序的类型:

在此处输入图像描述

当我尝试使用 switch 处理它时,这里有一堆错误:

在此处输入图像描述

我正在使用完全相同的代码来观察其他类型的数据并且它有效。似乎只有当我尝试将 BehaviorRelay 与枚举一起使用时,才会发生这种情况。有人可以指出我正确的方向吗?

标签: iosswiftrx-swift

解决方案


你需要

let disposeBag = DisposeBag()

viewModel.state.subscribe { [weak self] (state) in 
    
}.disposed(by:disposeBag)

推荐阅读