ios - ReactiveCocoa 4 : Observing an Action's completed event

标签 ios swift reactive-cocoa reactive-cocoa-4

我正在观察响应式 cocoa 4 操作,因此我可以在执行操作时运行一些代码。

这是我的操作定义:

buttonAction = Action<Bool, Void, NoError>() { value in

    return SignalProducer<Void, NoError> { observer, _ in
        dataProvider.addNewTestProduct()

        observer.sendNext()
        observer.sendCompleted()
    }

这是我进行观察的方式:

vm.buttonAction.events.observeCompleted {
    print("observed completed")
}
vm.buttonAction.events.observeNext {
    print("observed next")
}

Next 事件的观察工作正常。当 UIButton 触发操作时,将执行打印语句。

但是,我的问题是,出于某种原因,对已完成事件的观察从未被触发。这可能是 ReactiveCocoa 中的错误还是我做错了什么?

谢谢!

最佳答案

我在 ReactiveCocoa github 页面上问了同样的问题并得到了答案(来自@ikesyo)。为了完整起见,我在这里提供答案:

这是预期的行为。由于签名是公开的让事件:Signal<Event<Output, Error>, NoError> ,可以观察到inner producer的Completed事件如下:

vm.buttonAction.events.observeNext { event in
    switch event {
    case let .Next(value): ... // A Next event from the inner producer
    case .Completed: ... // A Completed event from the inner producer
    default: break
    }
}

来源: https://github.com/ReactiveCocoa/ReactiveCocoa/issues/2784

关于ios - ReactiveCocoa 4 : Observing an Action's completed event,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36481489/

相关文章:

iphone - UIScrollView 中的 ICarousel

ios - RACCommand 初始值设定项信号未命中 executingSignals

ios - 为什么这个连接不起作用?

swift - “NSURL” 不能隐式转换为 “URL” ;您的意思是使用 “as” 进行显式转换吗?在 swift 3

ios - 覆盖内置类成员函数的协议(protocol)扩展

android - Swift 到 Kotlin - 扩展

ios - RAC 和单元重用 : putting deliverOn: in the right place?

ios - HomeKit 附件协议(protocol)步骤 M4

ios - 不支持指定多个 post_install Hook 的无效 Podfile 文件

iphone - 跟踪数据使用情况