I have a simple ViewModel:
struct ViewModel {
var someText = Variable<String>("")
func foo() -> Observable<String> {
return someText.asObservable()
}
}
In the ViewController, viewModel is the instance variable, and someTextField is a UITextField with IBOutlet connected properly
var viewModel = ViewModel()
@IBOutlet weak var someTextField: UITextField!
Then in viewDidLoad() of the ViewController, I set things up and do the following:
someTextField.rx.text.map { $0 ?? "" }.bind(to: viewModel.someText)
let disposeBag = DisposeBag()
let observable = viewMode.foo()
observable.subscribe(onNext: { data in
print(data)
}, onError: { error in
print(error)
}, onCompleted: {
print ("complete")
}, onDisposed: {
print("disposed")
}).disposed(by: disposeBag)
As I enter characters in the textfield, I expect print() to print out these characters. But print() is only invoked once in the debugger (and not subsequently when text field receives input)
What is wrong?