3

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

   }
}

Signal Producer を作成し、その信号を takeUntil 入力信号として使用し、後で手動で信号をトリガーするにはどうすればよいですか。私はそれを正しい方法でやっていますか?

4

1 に答える 1

2

手動で発行できるシグナルを作成する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 

何らかの理由であなたflagSignalをaに変換する必要がある場合は、そのためのコンストラクターがあり、SignalProducerSignalProducer

let flagSignalProducer = SignalProducer(signal: flagSignal)
于 2017-04-11T19:33:39.483 に答える