RxSwift выход из наблюдаемой цепочки, если текст пустой - PullRequest
0 голосов
/ 20 ноября 2018

У меня проблемы с пониманием пути раннего выхода из наблюдаемой последовательности, если у меня нет необходимой информации. Вот упрощенный пример ...

@IBOutlet weak var myTextField: UITextField!
...
myButton.rx.tap. // stop here if textField is nil or empty
.flatMap { API.fetchMyList() }
.subscribe...

1 Ответ

0 голосов
/ 20 ноября 2018

Вы захотите преобразовать свою наблюдаемую цепочку, включив в нее содержимое текстового поля, а затем отфильтровать значения, которые вам не интересны. Оператор withLatestFrom извлечет значения из другой наблюдаемой в текущую цепочку.

@IBOutlet weak var myTextField: UITextField!

myButton.rx.tap
.withLatestFrom(myTextField.rx.text)
.filter { $0 != nil && $0?.isEmpty == false }
.flatMapLatest { // here $0 is the value of the text field
  API.fetchMyList($0) 
}
.subscribe...

В качестве дополнительного примечания, вы, вероятно, захотите использовать flatMapLatest вместо flatMap, чтобы старые запросы отменялись при повторном нажатии кнопки.

...