2015-06-04 21 views
5

I"SignalProducer <Bool, NoError>" ı nasıl ReactiveCocoa 3'ün "SignalProducer <Bool, NSError>" 'a dönüştürebilirim?

let action: Action<AnyObject?, Bool, NSError> = Action { _ in 
    if self.flag { 
     return self.fooSignalProducer // SignalProducer<Bool, NoError> 
    } else { 
     return self.barSignalProducer // SignalProducer<Bool, NSError> 
    } 
} 

ReactiveCocoa 3. Action<AnyObject?, Bool, NSError> Bu kod bir örneğini oluşturma çalıştı hata 'SignalProducer<Bool, NoError>' is not convertible to 'SignalProducer<Bool, NSError>' ile hazırlanması için mümkün değildir.

SignalProducer<Bool, NoError>'u SignalProducer<Bool, NSError>'a nasıl dönüştürebilirim?

cevap

9

mapError işlecini kullanabilirsiniz. çizgisinde şey:

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

Düzenleme: Justin aşağıda işaret ettiği gibi, promoteErrors özellikle bu durum için tasarlanmıştır

:

self.fooSignalProducer |> promoteErrors(NSError) 
+4

'promoteErrors() 'için kullanışlıdır "NoError" dan yükseltme özel durumu. –

+0

@ JustinSpahr-Summers Bunu işaretlediğiniz için teşekkürler! Cevabı değiştirdim. – Simon

İlgili konular