如何将“SignalProducer <bool,noerror =”“>”转换为“ReactiveCocoa 3的SignalProducer <bool,nserror =”“>”?

时间:2015-06-04 12:40:28

标签: ios swift reactive-cocoa reactive-cocoa-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>

1 个答案:

答案 0 :(得分:9)

您可以使用mapError运算符。有点像:

self.fooSignalProducer |> mapError { _ in NSError() }

修改

正如Justin在下面指出的那样,promoteErrors专为此案例而设计:

self.fooSignalProducer |> promoteErrors(NSError)