如何在ReactiveCocoa(Swift)中将NSError SignalProducer转换为NoError SignalProducer

时间:2015-06-17 13:53:21

标签: ios swift reactive-cocoa reactive-cocoa-3

我有一个带有UIButton的模型,我有一个let producer = ctaTopButton.rac_signalForControlEvents(UIControlEvents.TouchUpInside).toSignalProducer() |> map {value in !self.model.enabled.value} // model.enabled <~ producer (ctaTopButton),当它被按下时应该翻转该属性,例如,点击true变为false,反之亦然。

我这样设置:

rac_signalForControlEvents(...).toSignalProducer()

我的问题的关键来自SignalProducer<AnyObject?, NSError>返回SignalProducer<Bool, NSError>,地图转换为<~

中缀运算符SignalProducer<Bool, NoError>只适用于promoteErrors所以我需要以某种方式转换我的制作人。

我的问题是,如何降低错误?我知道有一个NoError用于将NSError转换为mapError。还有NoError虽然我无法弄清楚如何获取std::queue<std::vector<Hooks>> Hooks_queue; 的实例,因为它没有初始化器。

1 个答案:

答案 0 :(得分:4)

对于这种情况,您可以使用catch()运算符,如:

let producer = ctaTopButton.rac_signalForControlEvents(.TouchUpInside).toSignalProducer()
    |> map { value in !self.model.enabled.value }
    |> catch { _ in SignalProducer<Bool, NoError>.empty }