flatMap
/map
のトリガーにのみ使用されるObservableがあります。したがって、Next
イベントのみが必要であり、値は必要ありません。このようなゴミの値に独自の概念を使用することもできますが、RxSwiftの規則があるかどうか疑問に思っています。
これが私が扱っているものです:
_// I'd rather not have an Element type that someone might use
let triggeringObservable: Observable<SomeSessionClass>
// ...
triggeringObservable.map { _ -> String in // The actual value is ignored
return SomeLibrary.username() // `username()` is only ready when `triggeringObservable` sends Next
}
_
この例では、triggeringObservable
はライブラリ内のいくつかのプロパティの_rx_observer
_であり、username()
を呼び出す準備ができていることを通知します。
この目的には、単にObservable<Void>
を使用できます。そのようです:
let triggerObservable = Observable<Void>.just()
triggerObservable.subscribeNext() {
debugPrint("received notification!")
}.addDisposableTo(disposeBag)
またはあなたの例では:
let triggeringObservable: Observable<Void>
// ...
triggeringObservable.map { Void -> String in // The actual value is ignored
return SomeLibrary.username()
}
これは私にとってSwift 4.1:
Observable<Void>.just(Void())
Swift 4(およびおそらくそれ以前)では、Void関連する型を期待するメソッドに、引数として空のタプルを渡すことができます。
var triggerObservable = PublishSubject<Void>()
...
triggerObservable.onNext(()) // "()" empty Tuple is accepted for a Void argument
または、Void case:の場合、引数なしでonNext()をオーバーロードする拡張機能を定義できます。
extension ObserverType where E == Void {
public func onNext() {
onNext(())
}
}
...
triggerObservable.onNext()
これは私にとってSwift 4.2:
Observable<Void>.just(())
Swift 4の場合、Xcodeは、引数なしで「just」を呼び出すことはできないと言います。現在、次の回避策を使用しています。
Observable.just(Void.self).subscribe(onNext: { Void -> String in
debugPrint("triggered!")
}).addDisposableTo(disposeBag)