ios - 将枚举与 BehaviorRelay 一起使用会在下游带来不同类型的值,并且无法处理
问题描述
我正在尝试使用 、 和 (这是一个枚举)来实现ViewModel
UIBehaviorRelay
状态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 与枚举一起使用时,才会发生这种情况。有人可以指出我正确的方向吗?
解决方案
你需要
let disposeBag = DisposeBag()
viewModel.state.subscribe { [weak self] (state) in
}.disposed(by:disposeBag)
推荐阅读
- python - 部署不和谐机器人时出现 Heroku 部署错误
- c# - 填充并打印出类类型数组
- c# - 从 Datagridview 中删除重复的行
- c# - 是否可以按成员调试结构/类初始化成员?
- go - 模板处理程序数据未显示在 Web 中
- ios - 更改参数值时的 AudioKit 咔哒声/拉链噪音
- youtube-data-api - 通过 YouTube API 查找“实时”视频的查询仅适用于不受限制的 API 密钥。我的查询是错误的还是我使用了错误的 API 库?
- javascript - 用户按下按钮的次数是如何计算的?
- java - response.sendredirect 在外部应用程序中不起作用
- django - 如何在邮递员中使用 django-multiselect 字段?