私が使用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)
の場合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を参照してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加