Различия между 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
как ожидается. Но я хочу знать полный статус объекта 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)