Как мога да конвертирам SignalProducer‹Bool, NoError› в SignalProducer‹Bool, NSError› на ReactiveCocoa 3?

Опитах се да създам екземпляр на 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>?


person r.izumita    schedule 04.06.2015    source източник


Отговори (1)


Можете да използвате оператора mapError. Нещо от рода на:

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

Редактиране:

Както Джъстин посочва по-долу, promoteErrors е специално проектиран за този случай:

self.fooSignalProducer |> promoteErrors(NSError)
person Simon    schedule 04.06.2015
comment
promoteErrors() е полезно за конкретния случай на надграждане от NoError. - person Justin Spahr-Summers; 06.06.2015
comment
@JustinSpahr-Summers Благодаря, че посочи това! Промених отговора. - person Simon; 06.06.2015