Swift3 完成处理程序中的快速返回Alamofire错误
我正在尝试为我的应用程序编写API管理器,并希望将任何响应错误返回给调用函数。我应该在这里测试错误并将其作为完成处理程序中的第三个变量返回,还是可以从HTTPURLResponse中获取它?有没有更好的办法 我有以下代码Swift3 完成处理程序中的快速返回Alamofire错误,swift3,alamofire,Swift3,Alamofire,我正在尝试为我的应用程序编写API管理器,并希望将任何响应错误返回给调用函数。我应该在这里测试错误并将其作为完成处理程序中的第三个变量返回,还是可以从HTTPURLResponse中获取它?有没有更好的办法 我有以下代码 func myQuery(router: myRouter, completionHandler: @escaping (HTTPURLResponse?, [String: Any]?) -> ()) { Alamofire.request(router)
func myQuery(router: myRouter, completionHandler: @escaping (HTTPURLResponse?, [String: Any]?) -> ()) {
Alamofire.request(router)
.responseJSON { response in
if response.result.error != nil {
}
else {
// ... save auth token
completionHandler(response.response, response.result.value as? [String: Any])
}
如果处理此问题的最佳方法是同时返回错误,那么此代码是否正确
func myQuery(router: myRouter, completionHandler: @escaping (String?, HTTPURLResponse?, [String: Any]?) -> ()) {
Alamofire.request(router)
.responseJSON { response in
if response.result.error != nil {
completionHandler(response.result.error as? String, response.response, response.result.value as? [String: Any])
}
else {
completionHandler(nil, response.response, response.result.value as? [String: Any])
}
为了添加更多的上下文,我尝试在调用函数时替换类似于此代码的内容
Alamofire.request((url),
method: .get,
parameters: nil,
encoding: URLEncoding.default,
headers: ["Authorization" : requestHeader, "APi-Key" : token])
.responseJSON { response -> Void in
if response.result.error != nil {
// Handle Error
completionHandler(nil, response.result.error as NSError?)
}
我将返回
response
(请求返回的参数)并处理完成处理程序中的所有内容。顺便说一下,as!字符串?
是一个矛盾的术语,我不知道怎么做。请你举个例子作为回答好吗?这方面我是新手。我不熟悉Alamofire
,但不熟悉(String?、HTTPURLResponse?、[String:Any]?
返回响应的–很可能是非可选–类型
并调用完成处理程序(response)
我似乎无法从响应中提取错误。编译器想要as?String!
我将其更改为as?String