在RxSwift中的数组上的combineLatest

时间:2015-08-26 00:37:32

标签: swift reactive-programming

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
  }
}

2 个答案:

答案 0 :(得分:4)

从RxSwift-2.0-alpha.1版本开始支持combineLatest和zip的数组版本。

希望这有帮助。

答案 1 :(得分:2)

现在Observable.combineLatest(array)代替array.combineLatest