RxSwift中array上的CombineLatest

Vil*_*lyG 1 reactive-programming swift

下面的代码是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
  }
}
Run Code Online (Sandbox Code Playgroud)

小智 5

从RxSwift-2.0-alpha.1向前的版本开始支持CombineLatest和zip的阵列版本。

希望这可以帮助。