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事件转发。