我正在使用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错误吗?
答案 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
}
}