我正在使用 RxSwift。我有一组文本字段,取决于哪个 UI 可见;它可以在数组中有 1、3 或 4 个文本字段。
遍历数组,我为它们中的每一个创建信号,将其映射到一个布尔值,指示该字段是否有效。
let textFields: [UITextField] = ...
var signals: [Observable<Bool>] = []
textFields.forEach { tf in
let sig = tf.rx_text
.map { string in
return string.length > 0
}
signals.append(sig)
}
通常,要组合多个信号,我会使用combineLatest
which has multiple variables 来接受不同数量的参数,如果我有三个信号,通常看起来像这样
_ = combineLatest(sig1, sig2, sig3) { $0 }
.subscribeNext { [weak self] valid in
self!.someButton.enabled = valid
}
.addDisposableTo(disposeBag)
当组合的信号数量未知时,有没有办法组合信号?
或者,有没有办法编写一个具有可变数量的通用参数的函数?我认为这将是编写一个函数来组合多个信号而不知道有多少的起点。