0

Я хочу создать расширение на SignalProducerType, как показано ниже.Реактивная модель возврата какао типа

extension SignalProducerType{ 
    func mapR() -> SignalProducer<[String:AnyObject], XError> { 
      return attemptMap { (value: [String:AnyObject]) -> Result<[String:AnyObject], XError> in 
       return Result(value: ["1":1]) 
      } 
     } 
} 

XError определяется как ERRORTYPE

public enum XError: ErrorType{ 
    case Invalid 
    case Unsuccessful 
} 

Но это не будет компилировать и ошибок.

'attemptMap' производит 'SignalProducer', а не предполагаемого типа контекстной результат 'Результат < [Строка: AnyObject], XError>' (ака 'Результат, XError>')

+0

Вы не возвращают ожидаемый тип от метода mapR. Если вы возвращаете Result <[String: AnyObject], XError>, тогда это должно быть хорошо, так как tryMap возвращает этот тип. – Eluss

ответ

0

Вы расширяют SignalProducerType, который имеет общие связанные типы Value и Error, что означает, что self является типичным типом, например SignalProducer<Value, Error>. Поэтому вы не можете вызвать attempMap с конкретным типом значения [String: AnyObject] и конкретным типом ошибки XError.

Заменить первую строку extension SignalProducerType с

extension SignalProducerType where Value == [String:AnyObject], Error == XError 

 Смежные вопросы

  • Нет связанных вопросов^_^