【发布时间】:2018-05-27 10:42:52
【问题描述】:
如何将 Int 类型的 Observable 转换为 Int 类型的变量?
这是我迄今为止尝试过的:
let obs: Observable<Int> = Observable.of(4)
let variable: Variable<Int> = obs
.flatMap { num in
return Variable<Int>(num)
}
使用 flatMap 感觉是进行转换的最合乎逻辑的方式,但是,我得到一个编译器错误,它本质上说它不喜欢 flatMap 返回任何不可观察的东西。有什么想法吗?
编辑:
只是为了说明为什么我需要将 Observable 转换为变量:
我需要我的 viewModel 来驱动 ViewController 中的 UIPickerView。目前,我的 ViewModel 中有两个公开的属性,项目:Observable(它是 UIPickerView 的数据源)和 selectedIndex:Variable。 selectedIndex 将驱动 UIPickerView 的初始值,但也会跟踪用户所做的任何更改。
我需要从 Observable 转换为 Variable 的原因是我需要弄清楚最初应该选择 UIPickerView 的哪个索引:
items.map { days -> Int in
if let index = days.index(where: { str in
return str == selectedDay
}) {
return index
}
return 0
}
.flatMap { num in
return Variable<Int>(num)
}
我现在想知道我是否过于复杂了,是否应该只使用 Observable 来代替变量。
【问题讨论】:
标签: rx-swift