2015-06-04 33 views
5

我試圖創造ReactiveCocoa 3. Action<AnyObject?, Bool, NSError>如何將「SignalProducer <Bool,NoError>」轉換爲ReactiveCocoa 3的「SignalProducer <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>

回答

9

您可以使用mapError運算符。沿着線的東西:

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

編輯:

如賈斯汀下面所指出的,promoteErrors是專門爲這種情況下設計:

self.fooSignalProducer |> promoteErrors(NSError) 
+4

'promoteErrors()'是有用從'NoError'升級的特定情況。 –

+0

@ JustinSpahr-Summers感謝您指出這一點!我已經修改了答案。 – Simon

相關問題