Как я могу преобразовать "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>?

1 ответ

Решение

Вы можете использовать mapError оператор. Что-то вроде:

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

Редактировать:

Как Джастин указывает ниже, promoteErrors специально разработан для этого случая:

self.fooSignalProducer |> promoteErrors(NSError)
Другие вопросы по тегам