RxSwiftがbindToを使用してVariable <String>をUILabelにバインドしているSwift3.0アップデートでは機能しない

JinglesBunny

私が使用RxSwift私はバインドするviewmodelUILabelUITexfieldUITextfieldものがへの変換は問題を持っていないSwift 3だけで交換する、rx_textrx.text働いていました。

しかし、そうではありませんUILabelSwift 2.2、私は使用しました:

self.viewModel.shiftNameText.asObservable().bindTo(self.shiftLabel.rx_text).addDisposableTo(self.disposeBag)

の場合Swift 3RxSwift3.0.0-beta.1を使用していて、rx_textをrx.text変更しようとしましたが、コンパイルされず、「タイプの値を変換できません」というエラーが表示されます。AnyObserver<String?>' (aka 'AnyObserver<Optional<String>>') to expected argument type 'Variable<String>".

誰かがこれを機能させる理由と方法を知っていますか?ありがとう。

marcusficner

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参照してください

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ