0

我很喜歡ReactiveCocoa/ReactiveSwift的noob。我有兩個SignalProducers。如果第一個SignalProducer返回nil,那麼我想要執行第二個Signal Producer否則不是。我閱讀了文檔,但我不確定哪種語法可以幫助我像這樣工作。任何幫助,高度讚賞。如何使用反應可可5或6鏈接信號發生器或信號發生器序列?

+0

你是什麼意思與「返回零」?你的意思是第一個SignalProducer發送一個值爲零的事件嗎?或者你的意思是它根本不發送一個事件,然後終止? – MeXx

+0

第一個生產者發送值爲nil @MeXx的事件 – coolly

回答

1

好吧,所以你想從第一個SignalProducer獲取值,只要這些值不是零。然後,您想要從第二個SignalProducer獲取值。如果措辭這樣一來,它已經告訴你你需要的運營商:take(while:)then

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

... 

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

take(while:)運營商將只轉發所有的事件,只要給定塊返回true。因此,在這種情況下,只要事件爲零,該塊返回false,並且生成的SignalProducer完成。

then運營商也從轉發事件producerA直到producerA完成,此時producerB開始,現在從producerB事件轉發。