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)
欢迎大家指正错误。
我有一个玩家列表,我希望观察每个玩家的耐力并且观察者应该相同。 (可能共享观察者)
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)
欢迎大家指正错误。