将枚举与 BehaviorRelay 一起使用会在下游带来不同类型的值,使其无法处理
Using enum with BehaviorRelay brings a different type of value downstream and makes it impossible to handle
我正在尝试使用 ViewModel
、BehaviorRelay
和 State
(这是一个枚举)来实现 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)
我正在尝试使用 ViewModel
、BehaviorRelay
和 State
(这是一个枚举)来实现 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)