从Alamofire获取响应数据错误

时间:2016-02-17 20:42:35

标签: ios swift alamofire

我在我的一个iOS项目中一直使用Alamofire,但最近升级到Alamofire 3.0时格式略有改变,以便返回结果。在我的情况下,我想调用一个登录API并让它返回结果。可能会发生一些错误,因此我总是在API结果中返回问题所在,所以如果响应为400,我希望我的代码进入失败块,然后将来自API的消息包含在内错误,但我似乎无法在结果失败时从请求中获取响应数据。

这是我的代码:

Alamofire.request(
        method,
        Constants.baseURL + route,
        parameters: fullParameters)
        .validate()
        .responseJSON { response in
            let json = JSON(response.result.value!)
            switch response.result {
            case .Success:
                completion?(json["data"])
            case .Failure(let errorData):
                failure?(errorData, json["errmsg"])
            }
    }

在这里发生的事情是,当响应失败时,它会因为response.result.value为零而中断,但我希望它是从API返回的JSON,无论如何。另一方面,当响应成功时,它可以很好地工作。

1 个答案:

答案 0 :(得分:2)

由于您正在呼叫validate() Alamofire会自动验证来自200...299的状态代码。

如果您不希望Alamofire验证您的状态代码,但您想自己手动执行此操作,则有两种选择:

  • 删除.validate()并手动处理所有内容。
  • validate()更改为.validate(statusCode: yourRange)以获取您要允许的范围并手动处理它们。

更多信息here