[英]RxSwift using bindTo for binding Variable<String> to UILabel not working for Swift 3.0 update
我使用RxSwift
将viewmodel
RxSwift
绑定到UILabel
和UITexfield
。 UITextfield
的转换为Swift 3
没问题,只需将rx_text
替换为rx_text
rx.text
。
但不适用于UILabel
。 在Swift 2.2
,我使用了:
self.viewModel.shiftNameText.asObservable().bindTo(self.shiftLabel.rx_text).addDisposableTo(self.disposeBag)
对于Swift 3
,我正在使用RxSwift
3.0.0-beta.1并尝试仅将rx_text更改为rx.text ,但是它没有编译并显示此错误“无法转换类型为' AnyObserver<String?>' (aka 'AnyObserver<Optional<String>>') to expected argument type 'Variable<String>".
有谁知道为什么以及如何进行这项工作? 谢谢。
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 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.