如何使用反应性可可5或6链接信号产生者或信号产生者序列?

时间:2017-09-13 06:41:11

标签: swift cocoa reactive-programming reactive-cocoa reactive-swift

我在ReactiveCocoa / ReactiveSwift中非常棒。我有两个SignalProducers。如果第一个SignalProducer返回nil,那么我想执行第二个Signal Producer,否则不执行。我阅读了文档,但我不确定哪种语法可以帮助我完成这样的工作。任何帮助都非常感谢。

1 个答案:

答案 0 :(得分:3)

好的,所以你想从第一个SignalProducer获取值,只要这些值不是nil。然后,您想从第二个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运算符还会从producerA转发事件,直到producerA完成,此时producerB已启动,现在转发来自producerB的事件。< / p>