SignalProducer<AnyObject?, NSError>
a を返す関数があり、プロデューサーを multiple にバインドしたいとしましょうMutableProperty<String>
。したがって、次のようなものです。
let foo = SignalProducer<AnyObject?, NSError>(value: nil)
let someProperty1 = MutableProperty<String>("")
let someProperty2 = MutableProperty<String>("")
someProperty1 <~ foo
.flatMapError { _ in
SignalProducer<AnyObject?, NoError>.empty
}
.map { _ in
return "test"
}
// someProperty2 <~ foo etc...
自分の機能 (ネットワーク関連のものなど) が複数回実行されるのを避けるために、マルチキャストを使用する必要があります。CHANGELOGからわかる限り、これにstartWithSignal
使用する演算子です。ただし、宣言的な方法でこれを行う方法がわかりません。
したがって、1 つのアプローチは、 のクロージャでバインディングを作成することですstartWithSignal
。
foo.startWithSignal { signal, disposable in
someProperty1 <~ signal
.map { _ in
return "test"
}
// someProperty2 <~ signal etc...
}
ただし、NSError
パーツを削除する必要があるため、これは明らかに失敗します。Signal
(の反対に)を与えているため、 ( RAC4 では、RAC3 では)SignalProducer
は使用できません。どうすれば私たちのためにこれを行うことができるのですか?最後に、これが RAC3/RAC4 でマルチキャストを処理する適切な方法であるかどうかさえ確信が持てませんか?flatMapError
catch
mapError
どんな助けでも大歓迎です。