Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在ReactiveCocoa(Swift)中将N错误信号发生器转换为无错误信号发生器_Ios_Swift_Reactive Cocoa_Reactive Cocoa 3 - Fatal编程技术网

Ios 如何在ReactiveCocoa(Swift)中将N错误信号发生器转换为无错误信号发生器

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

我有一个具有可变属性的模型,我有一个UIButton ctaTopButton,当按下该属性时,它应该翻转该属性,例如,单击“真”将变为“假”,反之亦然

我是这样设置的:

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的捕获冲突。