繁体   English   中英

RxSwift使用bindTo绑定变量 <String> 到UILabel不适用于Swift 3.0更新

[英]RxSwift using bindTo for binding Variable<String> to UILabel not working for Swift 3.0 update

我使用RxSwiftviewmodel RxSwift绑定到UILabelUITexfield 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>".

有谁知道为什么以及如何进行这项工作? 谢谢。

UILabelrx.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM