RxSwift Создание наблюдаемого на основе переменной

Я пытаюсь построить Observable, который будет выводить значение, основанное на значении переменной.

Что-то вроде того:

let fullName = Variable<String>("") let isFullNameOKObs: Observable<Bool> isFullNameOKObs = fullName .asObservable() .map { (val) -> Bool in // here business code to determine if the fullName is 'OK' let ok = val.characters.count >= 3 return ok } 

К сожалению, блок на карте func никогда не называется!

Причина этого в том, что:

  1. Переменная fullName привязывается к UITextField с двунаправленным оператором <->, как определено в примере RxSwift.
  2. Наблюдается, что isFullNameOKObs Observable будет скрывать или отображать кнопку отправки моего ViewController.

Любая помощь будет принята с благодарностью.

благодаря

Модель

 class Model { let fullName = Variable<String>("") let isFullNameOKObs: Observable<Bool> let disposeBag = DisposeBag() init(){ isFullNameOKObs = fullName .asObservable() .debug("isFullNameOKObs") .map { (val) -> Bool in let ok = val.characters.count >= 3 return ok } .debug("isFullNameOKObs") isRegFormOKObs = Observable.combineLatest( isFullNameOKObs, is...OK, ... ) { $0 && $1 && ... } isRegFormOKObs .debug("isRegFormOKObs") .asObservable() .subscribe { (event) in // update the OK button } // removing this disposedBy resolved the problem //.disposed(by: DisposeBag()) } } 

ViewController:

 func bindModel() -> Void { _ = txFullName.rx.textInput <-> model!.fullName ...... } 

One Solution collect form web for “RxSwift Создание наблюдаемого на основе переменной”

Вам нужна двусторонняя привязка между UITextField и вашей Variable ?

Если нет, я бы предложил вам просто использовать bindTo() а именно: myTextField.rx.text.orEmpty.bindTo(fullName).disposed(by: disposeBag)

  • Rxswift - как показать индикатор выполнения
  • RxSwift - неправильная концепция
  • Привязка к UIRefreshControl после сетевого вызова
  • Общий способ вызова сетевых запросов для API-клиента
  • Правильный способ утилизации одноразовых наблюдаемых в RxSwift
  • RxSwift: использование rx_refreshing для uirefreshcontrol
  • RXSwift Как создать оболочку для метода делегата с возвращаемым значением
  • Зарегистрируйте две пользовательские ячейки с помощью RxSwift
  • Насколько безопасно использовать сторонние FRP-структуры для долгосрочного проекта, зная, что быстро меняется постоянно?
  • Тип 'inout UIButton' не соответствует протоколу 'ReactiveCompatible'
  • Как я могу взять под свой контроль canEditRowAtIndexPath при использовании расширения RxCocoa для UITableView
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.