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',而不是预期的上下文结果类型'Result<[String : AnyObject], XError>'(又名'Result, XError>')

4

1 回答 1

0

您正在扩展具有通用关联类型的 SignalProducerTypeValueError,这意味着 self 是通用类型,例如SignalProducer<Value, Error>。所以你不能用具体的值类型 [String:AnyObject] 和具体的错误类型 XError 来调用 attempMap。

将第一行替换extension SignalProducerType

extension SignalProducerType where Value == [String:AnyObject], Error == XError
于 2016-07-13T06:37:51.240 回答