0

私はReactiveCocoa/ReactiveSwiftのかなりのnoobです。私は2つのSignalProducersを持っています。最初のSignalProducerがnilを返す場合、そうでない場合は2番目のSignal Producerを実行します。私はドキュメントを読んでいますが、どの構文がこのようなことに役立つか分かりません。どんな助けも高く評価されます。反応性のあるココア5または6を使用してシグナルプロデューサーまたはシグナルプロデューサーの配列を連結するにはどうすればよいですか?

+0

「返品なし」とはどういう意味ですか?最初のSignalProducerが値nilのイベントを送信することを意味しますか?それとも、イベントをまったく送信せずに終了するということですか? – MeXx

+0

最初のプロデューサは値nil @MeXxを持つイベントを送信します – coolly

答えて

1

これらの値がnilでない限り、最初のSignalProducerから値を取得する必要があります。次に、2番目のSignalProducerから値を取得します。この方法を言葉で表現した場合、それはすでにあなたが必要とされ、オペレータがわかります:take(while:)thenを:

let producerA: SignalProducer<Int?, NoError> 
let producerB: SignalProducer<Int?, NoError> 

... 

producerA 
    .take(while: { $0 != nil }) 
    .then(producerB) 

限り、与えられたブロックがtrueを返したとしてtake(while:)オペレータますちょうど前方にすべてのイベント。この場合、イベントがnilになるとすぐに、ブロックはfalseを返し、結果のSignalProducerは完了します。

thenオペレータも開始され、現在はproducerBからのイベントが転送される時点producerBproducerA完了するまでproducerAからイベントを転送します。

関連する問題