Alamofire:错误:无法将“结果<_,_>”类型的值分配给“结果”类型

Posted

技术标签:

【中文标题】Alamofire:错误:无法将“结果<_,_>”类型的值分配给“结果”类型【英文标题】:Alamofire: ERROR: Cannot assign value of type 'Result<_,_>' to type 'Result' 【发布时间】:2016-05-12 18:46:07 【问题描述】:

我使用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
    
   

如上所示,我的代码中出现了一个奇怪的错误。这是 source code 的 Alamofire.Result 。这是一个枚举enum Result&lt;Value, Error: ErrorType&gt;

我在我的班级中使用相同的Alamofire.Result 类型作为self._resultresult 在初始值中传递。

为什么会出现此错误?看起来编译器认为它们不是同一类型……我的 xcode 版本是 7.3.1。这是 xcode 的错误吗?

【问题讨论】:

【参考方案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
    

【讨论】:

以上是关于Alamofire:错误:无法将“结果<_,_>”类型的值分配给“结果”类型的主要内容,如果未能解决你的问题,请参考以下文章

比较 alamofire 返回的错误对象

Swift 3.0 迁移后的 Alamofire 错误:“无法将 '(URL, HTTPURLResponse)-> (URL)' 类型的值转换为预期的参数类型 'Parameters'”?

迁移 Swift 和更新 Alamofire 后,我的路由器无法工作

由于 TIC SSL 信任错误,无法使用 Alamofire 发出请求

我如何用 alamofire 解析 JSON

我如何用alamofire解析JSON