Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays RxSwift:观察可观测数组中的每个元素可观测属性_Arrays_Swift_Reactive Programming_Rx Swift - Fatal编程技术网

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

Arrays RxSwift:观察可观测数组中的每个元素可观测属性,arrays,swift,reactive-programming,rx-swift,Arrays,Swift,Reactive Programming,Rx Swift,我有一份球员名单,我希望每个球员的耐力都能被观察到,而观察者应该是相同的。(可能是分享观察员) 因此,每当player1.stamina==0时,我就可以从列表中删除player1,但现在只需要观察player2。您可以使用Observable.combinelateest组合数组元素属性中的所有最新事件 这是对我有效的解决方案 class Player { let stamina = Variable(0) } // ViewController let disposeBag = D

我有一份球员名单,我希望每个球员的耐力都能被观察到,而观察者应该是相同的。(可能是分享观察员)


因此,每当player1.stamina==0时,我就可以从列表中删除player1,但现在只需要观察player2。

您可以使用Observable.combinelateest组合数组元素属性中的所有最新事件

这是对我有效的解决方案

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 { $0.stamina.asObservable() }
    return Observable.combineLatest { playerStaminaObservableList }
}
.subscribe(onNext: {
    print("List of playerStamina: \($0)")
})
.disposed(by: disposeBag)
职业玩家{
让耐力=变量(0)
}
//视图控制器
设disposeBag=disposeBag()
//排列
let playerList:Variable=Variable([])
//同时观察每个球员的耐力
playerList.asObservable()
.flatmap最新{玩家->在
让playerStaminaObservableList=players.map{$0.stamina.asObservable()}
返回可观察的.CombineTest{playerStaminaObservableList}
}
.订阅(onNext:{
打印(“播放列表Tamina:\($0)”)
})
.处置(由:处置人)

请随意更正任何错误。

从RxSwift v4.0开始,变量已被弃用。我只是知道。那么,在不推荐使用变量之后,应该使用什么呢?感谢您提供的信息。当前推荐的此API的替代品是
RxCoCoCoA.BehaviorRelay
您能给我一个链接吗?我需要更多地了解这一变化。谢谢@iWheelBuy@muizmoses
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 { $0.stamina.asObservable() }
    return Observable.combineLatest { playerStaminaObservableList }
}
.subscribe(onNext: {
    print("List of playerStamina: \($0)")
})
.disposed(by: disposeBag)