0

Ich möchte Erweiterung auf SignalProducerType wie folgt erstellen.Reactive Kakao Versuchsplan Rückgabetyp

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

xError wird als Errortype

definiert
public enum XError: ErrorType{ 
    case Invalid 
    case Unsuccessful 
} 

Aber dies wird nicht kompiliert und Fehler.

'attemptMap' produziert 'SignalProducer', nicht die erwartet kontextuellen Ergebnistyp 'Ergebnis < [String: ANYOBJECT], xError>' (auch bekannt als 'Ergebnis, xError>')

+0

Sie kehren nicht erwarteten Typ von MapR Methode. Wenn Sie das Ergebnis <[String: AnyObject], XError>, zurückgeben, dann sollte es in Ordnung sein, da die Methode diesen Typ zurückgibt. – Eluss

Antwort

0

Sie erweitern SignalProducerType, der generische Typen Value und Error hat, was bedeutet, dass self ein generischer Typ ist, z SignalProducer<Value, Error>. Sie können also attempMap nicht mit dem konkreten Werttyp [String: AnyObject] und dem konkreten Fehlertyp XError aufrufen.

Ersetzen Sie die erste Zeile extension SignalProducerType mit

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