2

我有一个带有 a 的模型,MutableProperty<Bool>并且我有一个UIButton(ctaTopButton) 应该在按下该属性时翻转该属性,例如,单击时 true 变为 false,反之亦然。

我是这样设置的:

let producer = ctaTopButton.rac_signalForControlEvents(UIControlEvents.TouchUpInside).toSignalProducer()
    |> map {value in !self.model.enabled.value}


// model.enabled <~ producer  

我的问题的症结来自地图转换为的rac_signalForControlEvents(...).toSignalProducer()返回SignalProducer<AnyObject?, NSError>SignalProducer<Bool, NSError>

然而,中缀运算符<~仅适用于SignalProducer<Bool, NoError>因此我需要以某种方式转换我的生产者。

我的问题是,我如何降级错误?我知道有一个promoteErrors用于转换NoErrorNSError. 还有mapError虽然我不知道如何取回一个实例,NoError因为它没有初始化程序。

4

1 回答 1

4

您可以catch()在这种情况下使用运算符,例如:

let producer = ctaTopButton.rac_signalForControlEvents(.TouchUpInside).toSignalProducer()
    |> map { value in !self.model.enabled.value }
    |> catch { _ in SignalProducer<Bool, NoError>.empty }
于 2015-06-17T14:51:06.543 回答