作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
here说明了map
的flatMap
和RxSwift
之间的差异。现在,我想观察内部可观察到的变化时,上面的可观察实例。 我该怎么做?
让我们看一个例子,
func testFlatMap() {
let bag = DisposeBag()
struct Player {
var age: Int
var score: BehaviorSubject<Int>
}
let male = Player(age: 28, score: BehaviorSubject(value: 80))
let player = PublishSubject<Player>()
player.asObservable()
.flatMap { $0.score.asObservable() }
.subscribe(onNext: { print($0) })
.disposed(by: bag)
player.on(.next(male))
male.score.on(.next(100))
}
80
100
age
中完整的Player对象状态(即播放器的
.subscribe(onNext: { print($0) })
),但它只获取
score
。
我该怎么做?
Player (where I can access both age:28 and score:80)
Player (where I can access both age:28 and score:100)
最佳答案
另一种选择是:
player.asObservable()
.flatMap { Observable.combineLatest(Observable.just($0.age), $0.score.asObservable()) }
var
进行保存,它们应该始终是
let
。用不同的主题替换主题是没有意义的。
struct Player {
var age: Int
var score: Int
}
关于ios - 如何在RxSwift中使用flatMap观察上层Observable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60089331/
我是一名优秀的程序员,十分优秀!