Ios 如何在ReactiveCocoa(Swift)中将N错误信号发生器转换为无错误信号发生器
我有一个具有可变属性的模型,我有一个UIButton ctaTopButton,当按下该属性时,它应该翻转该属性,例如,单击“真”将变为“假”,反之亦然 我是这样设置的:Ios 如何在ReactiveCocoa(Swift)中将N错误信号发生器转换为无错误信号发生器,ios,swift,reactive-cocoa,reactive-cocoa-3,Ios,Swift,Reactive Cocoa,Reactive Cocoa 3,我有一个具有可变属性的模型,我有一个UIButton ctaTopButton,当按下该属性时,它应该翻转该属性,例如,单击“真”将变为“假”,反之亦然 我是这样设置的: let producer = ctaTopButton.rac_signalForControlEvents(UIControlEvents.TouchUpInside).toSignalProducer() |> map {value in !self.model.enabled.value} // mod
let producer = ctaTopButton.rac_signalForControlEvents(UIControlEvents.TouchUpInside).toSignalProducer()
|> map {value in !self.model.enabled.value}
// model.enabled <~ producer
我的问题的关键来自rac_signalForControlEvents…toSignalProducer返回一个SignalProducer,映射将其转换为SignalProducer
中缀运算符对于这种情况,可以使用catch运算符,例如:
let producer = ctaTopButton.rac_signalForControlEvents(.TouchUpInside).toSignalProducer()
|> map { value in !self.model.enabled.value }
|> catch { _ in SignalProducer<Bool, NoError>.empty }
旁白:我需要|>捕获{{inSignalProducer.empty}它不喜欢无参数版本。谢谢,我已经修复了答案。在ReactiveCocoa 3 Swift 2中使用flatMapError而不是catch,以避免与Swift 2的捕获冲突。