gpt4 book ai didi

ios - Swift alamofire 重构试图返回状态代码

转载 作者:可可西里 更新时间:2023-11-01 02:11:23 27 4
gpt4 key购买 nike

我已经开始重构我的 Alamofire api 调用以将它们保存在一个单独的文件中。唯一的问题是我也不知道如何返回状态码。

API 文件:

static func getCategories(_ catId: Int, response: @escaping (JSON) -> ()) {
let urlString = baseURL + ResourcePath.categories(catId: catId).description
Alamofire.request(urlString, encoding: JSONEncoding.default, headers: headers).responseJSON{ (responseData) -> Void in

let cCatData = JSON(responseData.result.value ?? [])
response(cCatData)

}
}

然后在我的 VC 中:

Api.getCategories(catId) { (JSON) -> () in
self.categories = JSON["catData"]
self.tableView.reloadData()
}

但是我需要知道状态码是200/400/404/422/500我不想用.validate()函数,我想传递状态码

通常,如果我将所有内容都放在同一个文件中,我会通过以下方式获取状态代码:

Alamofire.request("https://www.something", parameters: parameters, encoding: JSONEncoding.default, headers: headers)
.responseJSON() { response in
if let statusCode = response.response?.statusCode {

if statusCode == 200 {

}

}

最佳答案

如果你想让你的闭包传回状态码,那么添加一个Int?参数并将它传回:

static func getCategories(_ catId: Int, response: @escaping (JSON, Int?) -> ()) {
let urlString = baseURL + ResourcePath.categories(catId: catId).description
Alamofire.request(urlString, encoding: JSONEncoding.default, headers: headers).responseJSON { responseData in
let cCatData = JSON(responseData.result.value ?? [])
response(cCatData, responseData.response?.statusCode)
}
}

或者我可能会使用更标准的变量/参数名称:

static func getCategories(_ catId: Int, completionHandler: @escaping (JSON, Int?) -> ()) {
let urlString = baseURL + ResourcePath.categories(catId: catId).description
Alamofire.request(urlString, encoding: JSONEncoding.default, headers: headers).responseJSON { response in
let cCatData = JSON(response.result.value ?? [])
completionHandler(cCatData, response.response?.statusCode)
}
}

无论哪种方式,您都可以:

Api.getCategories(catId) { json, statusCode in 
guard statusCode == 200 else {
print("status code not 200! \(statusCode)")
return
}

// if you got here, the status code must have been 200
}

关于ios - Swift alamofire 重构试图返回状态代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40819888/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com