5

我尝试创建一个Action<AnyObject?, Bool, NSError>ReactiveCocoa 3 的实例。

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>

4

1 回答 1

9

您可以使用mapError运算符。类似于以下内容:

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

编辑:

正如贾斯汀在下面指出的那样,promoteErrors专为这种情况设计:

self.fooSignalProducer |> promoteErrors(NSError)
于 2015-06-04T15:57:04.773 回答