2016-04-25 65 views
2

我想在swift中使用ReactiveCocoa對以下場景建模。ReactiveCocoa創建一個可以手動發射的信號發生器

class A{ 
    let flagSignalProducer = A Signal Producer 
    someSignal.takeUntil(a signal that I can trigger manually which is created out of flagSignalProducer).subscribeNext{ (_) in 

    } 
} 

如何創建信號生成器並將該信號用作takeUntil輸入信號並稍後手動觸發信號。我做對了嗎?

回答

1

爲了能夠手動發出信號,您可以使用Signal<(), NoError>.pipe()來獲取對信號的「觀察者」的參考,這將允許您手動發送信號上的事件。

let (flagSignal, flagObserver) = Signal<(), NoError>.pipe() 
someSignal.takeUntil(flagSignal).observeNext { _ in 

} 

//somewhere else, trigger the signal manually with the Observer 
flagObserver.sendNext(()) 
flagObserver.sendCompleted() //complete the signal and free memory 

,如果你需要轉換你的flagSignalSignalProducer出於某種原因,有一個SignalProducer構造爲,

let flagSignalProducer = SignalProducer(signal: flagSignal)