开始学习RxSwift(Realm课程)并提出一些问题。
在我的控制器中有一个TextField和Button,当我的TextField.count>我需要订阅Button.isEnable。 0
在课程中,这个问题解决了下一个代码:
在控制器设定值中:
userNameText.rx.text.orEmpty.bind(to: viewModel.userName).disposed(by: disposeBag)
passwordText.rx.text.orEmpty.bind(to: viewModel.passwordValue).disposed(by: disposeBag)
viewModel.isValid.map{$0}.bind(to: button.rx.isEnabled).disposed(by: disposeBag)
模特:
let userName = Variable<String>("")
let passwordValue = Variable<String>("")
let isValid: Observable<Bool>
init() {
isValid = Observable.combineLatest(self.userName.asObservable(), self.passwordValue.asObservable()) {(name, password) in
return name.count > 0 && password.count > 0
}
}
当然使用 Observable.combineLatest 来创建具有2值的observable,我们观察到它。(使用2值)
如何使用一个值创建Observable?
P.S不能这样工作(分钟2)
isValid = Observable.combineLatest(self.passwordValue.asObservable()) {(name) in
return name.count > 0 && password.count > 0
}
答案 0 :(得分:1)
只是做:
self.isValid = self.passwordValue.asObservable().map{ password in
password.count > 0
}