asDriver
やasSignal
がTraitの変換のために用意されているメソッドですから、そちらを使うべきです。
↓のようなコードがうまく動いているのは、たまたまDriverもSignalも実体がSharedSequenceで同じだったからであって、動作が保証されているわけではないと思います。
swift
1signal.flatMap { Driver.just($0) }
両者は WithLatestFrom で合成できない場合があったりして不便を感じています。
どんな場合でしょうか?具体的にコードを貼っていただいた方がよさそうです。
個人的には、DriverやSignalはあくまでView<->ViewModel間の橋渡し的なインターフェースとして使うイメージで、ViewModelの中での合成はいったんObservableに変換してから行うことが多いです。SharedSequenceのままだと使えるオペレーターが限られますし、RxSwiftで開発されているならModel層のインターフェースも大体Observable/Singleなどになっていると思うので、そちらとの連携もしやすくなります。
swift
1// いったんObservableに変換してから合成するサンプルコード
2
3let inputText: Driver<String>
4let buttonDidTap: Signal<Void>
5
6let outputText: Driver<String> = buttonDidTap.asObservable()
7 .withLatestFrom(inputText.asObservable())
8 .map { "The input value is ($0)" }
9 .asDriver(onErrorJustReturn: "")
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/12 06:39 編集
2018/08/13 06:31