在 RxSwift 中对数组进行 combineLatest
combineLatest on array in RxSwift
以下代码由 Ash Furrow 在 FRP 演示期间使用 RxSwift 进行了演示。不幸的是,RxSwift 的 "combineLatest" 运算符最多只允许 10 个可观察值。我正在寻找一种解决方法来获得相同的结果,但取而代之的是一系列可观察对象。
有什么想法吗?
class SignupDemoViewController: UIViewController {
@IBOutlet weak var emailAddressTextField: UITextField!
@IBOutlet weak var passwordTextField: UITextField!
@IBOutlet weak var signupButton: UIButton!
let disposeBag = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
let emailIsValid = emailAddressTextField.rx_text >- map (isEmail)
let passwordIsValid = passwordTextField.rx_text >- map (isPassword)
combineLatest(emailIsValid, passwordIsValid)
>- and
>- signupButton.rx_subscribeEnabledTo
>- disposeBag.addDisposable
signupButton.rx_tap
>- signup
>- display
>- disposeBag.addDisposable
}
}
从 RxSwift-2.0-alpha.1 版本开始支持数组版本的 combineLatest 和 zip。
希望对您有所帮助。
现在是 Observable.combineLatest(array)
而不是 array.combineLatest
。
以下代码由 Ash Furrow 在 FRP 演示期间使用 RxSwift 进行了演示。不幸的是,RxSwift 的 "combineLatest" 运算符最多只允许 10 个可观察值。我正在寻找一种解决方法来获得相同的结果,但取而代之的是一系列可观察对象。
有什么想法吗?
class SignupDemoViewController: UIViewController {
@IBOutlet weak var emailAddressTextField: UITextField!
@IBOutlet weak var passwordTextField: UITextField!
@IBOutlet weak var signupButton: UIButton!
let disposeBag = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
let emailIsValid = emailAddressTextField.rx_text >- map (isEmail)
let passwordIsValid = passwordTextField.rx_text >- map (isPassword)
combineLatest(emailIsValid, passwordIsValid)
>- and
>- signupButton.rx_subscribeEnabledTo
>- disposeBag.addDisposable
signupButton.rx_tap
>- signup
>- display
>- disposeBag.addDisposable
}
}
从 RxSwift-2.0-alpha.1 版本开始支持数组版本的 combineLatest 和 zip。
希望对您有所帮助。
现在是 Observable.combineLatest(array)
而不是 array.combineLatest
。