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被定義爲錯誤類型

public enum XError: ErrorType{ 
    case Invalid 
    case Unsuccessful 
} 

但這不會編譯錯誤。

'attemptMap' 產生 'SignalProducer',而不是 預期上下文結果類型 '結果< [字符串:AnyObject],XError>' (又名 '結果,XError>')

+0

你不從MAPR方法返回預期的類型。如果返回Result <[String:AnyObject],XError>,那麼它應該沒問題,因爲attemptMap返回該類型。 – Eluss

回答

0

您正在擴展SignalProducerType,後者具有通用關聯類型ValueError,這意味着self是泛型類型,例如SignalProducer<Value, Error>。所以你不能用具體的值類型[String:AnyObject]和具體的錯誤類型XError調用attempMap。

更換第一線extension SignalProducerType

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