Как преобразовать 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