RxSwift:观察可观察数组中的每个可观察元素属性

RxSwift : Observe each element observable property in observable array

我有一个玩家列表,我希望观察每个玩家的耐力并且观察者应该相同。 (可能共享观察者)

class Player {
  var stamina = Variable(10)
}

let player1 = Player()
let player2 = Player()

var playerList = Variable([player1, player2])

所以,每当 player1.stamina == 0 时,我就可以从列表中删除玩家 1,但现在只有玩家 2 可以观察到。

您可以使用 Observable.combineLatest 组合数组元素 属性

中的所有最新事件

这是对我有用的解决方案。

class Player {
    let stamina = Variable(0)
}

// ViewController
let disposeBag = DisposeBag()

// Array
let playerList: Variable<[Player]> = Variable([])

// Observing each player stamina at once
playerList.asObservable()
.flatMapLatest { players -> Observable<[Int]> in 
    let playerStaminaObservableList = players.map { [=10=].stamina.asObservable() }
    return Observable.combineLatest { playerStaminaObservableList }
}
.subscribe(onNext: {
    print("List of playerStamina: \([=10=])")
})
.disposed(by: disposeBag)

欢迎大家指正错误。