map
的flatMap
和RxSwift
之间的差异已得到说明。现在,我想观察内部可观察对象发生变化时的上部可观察实例。 我该怎么办?
让我们看一下示例,
here
在上面的示例中,输出为,
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
中完整的Player对象状态(即播放器的age
),但它只获取.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)
返回可观察到的分数。相反,您想返回可观察的玩家信息。您可以通过使用其他flatMap
运算符并在播放器自变量上方加上年龄,将年龄附加到得分上:
map