我如何将 "SignalProducer<Bool, NoError>" 转换为 ReactiveCocoa 3 的 "SignalProducer<Bool, NSError>"?
How can I convert "SignalProducer<Bool, NoError>" to "SignalProducer<Bool, NSError>" of ReactiveCocoa 3?
我尝试创建 ReactiveCocoa 3 的 Action<AnyObject?, Bool, NSError>
实例。
let action: Action<AnyObject?, Bool, NSError> = Action { _ in
if self.flag {
return self.fooSignalProducer // SignalProducer<Bool, NoError>
} else {
return self.barSignalProducer // SignalProducer<Bool, NSError>
}
}
此代码无法编译并出现错误 'SignalProducer<Bool, NoError>' is not convertible to 'SignalProducer<Bool, NSError>'
。
如何将 SignalProducer<Bool, NoError>
转换为 SignalProducer<Bool, NSError>
?
您可以使用 mapError
运算符。大致如下:
self.fooSignalProducer |> mapError { _ in NSError() }
编辑:
正如贾斯汀在下面指出的那样,promoteErrors
是专门为这种情况设计的:
self.fooSignalProducer |> promoteErrors(NSError)
我尝试创建 ReactiveCocoa 3 的 Action<AnyObject?, Bool, NSError>
实例。
let action: Action<AnyObject?, Bool, NSError> = Action { _ in
if self.flag {
return self.fooSignalProducer // SignalProducer<Bool, NoError>
} else {
return self.barSignalProducer // SignalProducer<Bool, NSError>
}
}
此代码无法编译并出现错误 'SignalProducer<Bool, NoError>' is not convertible to 'SignalProducer<Bool, NSError>'
。
如何将 SignalProducer<Bool, NoError>
转换为 SignalProducer<Bool, NSError>
?
您可以使用 mapError
运算符。大致如下:
self.fooSignalProducer |> mapError { _ in NSError() }
编辑:
正如贾斯汀在下面指出的那样,promoteErrors
是专门为这种情况设计的:
self.fooSignalProducer |> promoteErrors(NSError)