我使用RxSwift
将viewmodel
绑定到UILabel
和UITexfield
。转化为UITextfield
的{{1}}个问题,只需用Swift 3
替换rx_text
即可。
但不适用于rx.text
。在UILabel
,我使用了:
Swift 2.2
对于self.viewModel.shiftNameText.asObservable().bindTo(self.shiftLabel.rx_text).addDisposableTo(self.disposeBag)
,我正在使用Swift 3
3.0.0-beta.1并尝试将rx_text更改为 rx.text ,但它不会编译和显示此错误“无法转换类型为RxSwift
有谁知道为什么以及如何使这项工作?感谢。
答案 0 :(得分:31)
UILabel
' rx.text
属性的类型为AnyObserver<String?>
所以你需要将值映射到可选的
self.viewModel.shiftNameText
.asObservable()
.map { text -> String? in
return Optional(text)
}
.bind(to:self.shiftLabel.rx.text)
.disposed(by:self.disposeBag)
或简称:
self.viewModel.shiftNameText
.asObservable()
.map { $0 }
.bind(to:self.shiftLabel.rx.text)
.disposed(by:self.disposeBag)
有关其他解决方案,请参阅https://github.com/ReactiveX/RxSwift/issues/875。