我用RxSwift绑定我viewmodel来UILabel和UITexfield.UITextfield没有问题转换为Swift 3,只是替换rx_text为rx.text工作.
但不是UILabel.在Swift 2.2,我用过:
self.viewModel.shiftNameText.asObservable().bindTo(self.shiftLabel.rx_text).addDisposableTo(self.disposeBag)
Run Code Online (Sandbox Code Playgroud)
因为Swift 3,我正在使用RxSwift3.0.0-beta.1并尝试将rx_text更改为rx.text,但它没有编译并显示此错误"无法转换类型的值"AnyObserver<String?>' (aka 'AnyObserver<Optional<String>>') to expected argument type 'Variable<String>".
有谁知道为什么以及如何使这项工作?谢谢.
小智 35
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)
Run Code Online (Sandbox Code Playgroud)
或简而言之:
self.viewModel.shiftNameText
.asObservable()
.map { $0 }
.bind(to:self.shiftLabel.rx.text)
.disposed(by:self.disposeBag)
Run Code Online (Sandbox Code Playgroud)
有关其他解决方案,请参阅https://github.com/ReactiveX/RxSwift/issues/875.
| 归档时间: |
|
| 查看次数: |
20223 次 |
| 最近记录: |