Некоторые пункты:
asObservable()
не требуется. - вы можете подписаться на
.rx.text.orEmpty
напрямую, но тогда вы получите события, когда текстовое поле начинается и заканчивается редактированием.
Вот, пожалуйста:
@IBOutlet weak var currentPasswordTextField: UITextField!{
didSet{
currentPasswordTextField
.rx
.controlEvent(.editingChanged)
.withLatestFrom(currentPasswordTextField.rx.text.orEmpty)
.subscribe(onNext: { (text) in
//I want here to print the text after the editing changed.
print(text)
})
.disposed(by: disposeBag)
}
}
Что-то еще, о чем я думал прошлой ночью ...
Вставка этого кода в didSet
будет проблемой.Код Rx, как правило, ориентирован на вывод, а не на ввод.Из-за этого все, что идет в subscribe
, вероятно, будет ссылаться на какой-то другой объект, который также должен существовать, и вы, вероятно, захотите иметь возможность ссылаться и на другие наблюдаемые.
Что я подразумеваю под вводомvs output centric?
императивный код имеет тенденцию быть input центрированным , когда вы хотите знать, что произойдет, когда кнопка нажата, у вас обычно есть одно место, чтобы посмотреть, действие кнопки,Однако, если вы хотите понять все, что влияет на конкретную метку, индикатор активности или любой другой вывод, вам придется просмотреть весь код.Каждая функция в контроллере представления может передавать информацию на выход, и некоторые из них, вероятно, имеют следующий вид.
Декларативный код имеет тенденцию быть ориентированным на выход , когда вы хотите знать все, что влияет на меткуВывод или то, что заставляет индикатор активности показывать / скрывать, как правило, есть одно место для поиска.Однако, если вы хотите понять все, что делает нажатие кнопки, вам придется просмотреть весь код, чтобы понять это.(Прекрасным примером этого является электронная таблица, если вы хотите узнать, как определяется выход для конкретной ячейки, вам нужно только взглянуть на формулу в этой ячейке, но если вы хотите знать всеЯчейки, на которые воздействует определенная ячейка, это боль.)
По моему опыту, для программистов сложнее всего обернуть голову при работе с Rx.