【问题标题】:AlamofireObjectMapper responseObject method migrating issueAlamofireObjectMapper responseObject 方法迁移问题
【发布时间】:2016-09-23 12:04:19
【问题描述】:

AlamofireObjectMapper responseObject 方法有问题。它的 completionHandlerResponse<T, NSError> -> Void(旧)更改为 DataResponse<T> -> Void(现在)。也许我不明白,但您能告诉我现在如何通过此更改提供后端错误处理?之前,我完成了例如Response<Object, NSError>。现在我无法同时处理后端错误和成功接收的数据。还是我应该使用其他方法?

例如,现在我有:Xcode 8、swift 3、更新的框架

class func getAllProducts(successCallBack:((ProductsData?) -> Void), failureCallBack: ((NSError?, ServerResponseStatusCode?) -> Void)?) {

        Alamofire.request(URLRouter.Products).responseObject {
            (response: DataResponse<ProductsData, NSError>) in

            // inside completion block code
        }
    }

但是当我在新更新的 AlamofireObjectMapper 中检查时,这个方法的完成现在只是DataResponse&lt;T&gt; 的形式,因此我收到错误“通用类型“DataResponse”专用于太多类型参数(得到 2 但预期1)"

之前:工作 Xcode 7,swift 2.2

class func getAllProducts(successCallBack:((ProductsData?) -> Void), failureCallBack: ((NSError?, ServerResponseStatusCode?) -> Void)?) {

        Alamofire.request(URLRouter.Products).responseObject {
            (response: Response<ProductsData, NSError>) in

            // inside completion block code
        }
    }

非常感谢。

【问题讨论】:

  • 您可以按原样发布您的代码吗?
  • 是的,当然,我已经用更多细节编辑了这个问题。谢谢。

标签: swift alamofire swift3


【解决方案1】:

在使用 Swift 3.0Alamofire 4.0 中,您可能需要在响应闭包内的 switch 语句中处理错误/失败:

Alamofire.request(URLRouter.Products, method: .get, parameters: nil, encoding: JSONEncoding.default, headers: nil)
.validate()    
.responseObject { response in
    switch response.result {
        case .success:
            //print("...HTTP code: \ (response.response?.statusCode)")

        case .failure(let error as NSError):
            print("Error: \(error)")

        default:
            print("Unexpected case")
    }
}

【讨论】:

  • 这样做了,但不幸的是现在我收到一条错误消息“对成员 'request(_:method:parameters:encoding:headers:)' 的引用不明确”
  • 我已经重写了请求。
猜你喜欢
  • 1970-01-01
  • 2014-11-23
  • 2019-06-27
  • 2018-11-27
  • 2021-11-20
  • 2015-01-04
  • 2011-10-26
  • 2019-08-12
相关资源
最近更新 更多