Я использую RxSwift. У меня есть массив текстовых полей, зависящий от того, какой интерфейс видим; он может иметь 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
, который имеет несколько вариантов, чтобы взять в другой ряд аргументов, которые, как правило, выглядят так, если бы я имел три сигнала
_ = combineLatest(sig1, sig2, sig3) { $0 }
.subscribeNext { [weak self] valid in
self!.someButton.enabled = valid
}
.addDisposableTo(disposeBag)
ли существует способ комбинировать сигналы, когда количество объединяемых сигналов неизвестно?
В качестве альтернативы, существует ли способ написать функцию с переменным числом общих аргументов? Я думаю, что это будет отправной точкой для написания функции для объединения нескольких сигналов, не зная, сколько.