在 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