Alamofire:错误:无法指定类型的值'结果< _,_>'输入'结果'

时间:2016-05-12 18:46:08

标签: ios swift swift2 alamofire

我正在使用Alamofire来发送请求和处理响应。我创建了一个使用Alamofire.Result类型的简单类:

class MyHandler {
    private var _result: Alamofire.Result

    init(result: Alamofire.Result) {
        //ERROR: Cannot assign value of type 'Result<_,_>' to type 'Result'
        self._result = result
    }
}   

}

我得到了一个奇怪的错误,如上面的代码中所示。以下是Alamofire.Result的{​​{3}}。这是一个Enum enum Result<Value, Error: ErrorType>

我在班级Alamofire.Result使用相同的self._result类型初始化中传递的result

为什么我收到此错误?看起来编译器并不认为它们是同一类型...我的xcode版本是7.3.1。这是一个xcode错误吗?

1 个答案:

答案 0 :(得分:1)

AlamoFire.Result是具有两个占位符的通用类型

public enum Result<Value, Error: ErrorType> { ... }

您可以为您的类声明具体类型 占位符,例如

class MyHandler {
    private var _result: AlamoFire.Result<Int, NSError>

    init(result: AlamoFire.Result<Int, NSError>) {
        self._result = result
    }
}

但是你更有可能想要声明一个泛型类:

class MyHandler<Value, Error: ErrorType> {
    private var _result: AlamoFire.Result<Value, Error>

    init(result: AlamoFire.Result<Value, Error>) {
        self._result = result
    }
}