0

私はシグナルプロデューサーを持っています。それが終了したときに、値が送信されたかどうかを知りたいのですが、最後の値だけが必要です。とてもシンプルに思えます...

let myProducer: SignalProducer<MyObject, MyError> = getMyProducer()

myProducer.on(terminated: {

  // I need the last value here

  // Or I need to know if value was never called

}).start()

値をローカル var に保存しようとしました:

let myProducer: SignalProducer<MyObject, MyError> = getMyProducer()
var myValue: MyObject?

myProducer.on(value: { value in

    myValue = value

}, terminated: {

    guard let value = myValue else {
        // value was never called
        return
    }
    // value was called

}).start()

しかし、値が呼び出されている間に終了が呼び出されることがありますが、myValue はまだ nil です...

4

2 に答える 2