将枚举与 BehaviorRelay 一起使用会在下游带来不同类型的值,使其无法处理

Using enum with BehaviorRelay brings a different type of value downstream and makes it impossible to handle

我正在尝试使用 ViewModelBehaviorRelayState(这是一个枚举)来实现 UI 状态。

在 ViewModel 中:

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 与枚举一起使用时,才会发生这种情况。有人可以给我指出正确的方向吗?

你需要

let disposeBag = DisposeBag()

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