Alamofire - 从 Swift 2 转换为 Swift 3 时出错
Posted
技术标签:
【中文标题】Alamofire - 从 Swift 2 转换为 Swift 3 时出错【英文标题】:Alamofire - error converting from Swift 2 to swift 3 【发布时间】:2017-07-19 07:39:53 【问题描述】:我正在将我的项目从 Swift 2.3
转换为 Swift 3.0
。我们正在使用 Alamofire pod 进行联网。现在我遇到了NSError
的问题。
当我们写error: responseObj.result.error
时,Swift 3 不接受这个。帮我解决这个问题。
检查我的代码:
static func getDataFromAPI(parameters : [String : AnyObject], successCallBack : @escaping APISuccessCallBack, failureCallBack : @escaping APIFailureCallBack)
client.makePOSTRequest(service: Constants.API_BASE_URL, parameters: parameters) (statusCode, response, error) -> () in
if statusCode == MobomoAPIClient.HTTPStatusCode.Success
successCallBack(response)
else
failureCallBack(client.responseErrorMessage(statusCode: statusCode, response: response, error: error))
typealias APIClientResponseCallBack = (_ statusCode: Int?, _ response : AnyObject?, _ error : NSError?) -> ()
`self.alamoFireManager!.request(urlString, method: method, parameters: parameters, encoding: JSONEncoding.default, headers: headers)
.responseJSON (responseObj) -> Void in
responseCallBack(statusCode: responseObj.response?.statusCode, response: responseObj.result.value as AnyObject, error: responseObj.result.error)
`
【问题讨论】:
【参考方案1】:您应该将回调的NSError?
更改为Error?
并将failureCallBack 的错误转换为Error
。
typealias APIClientResponseCallBack = (_ statusCode: Int?, _ response : AnyObject?, _ error : Error?) -> ()
failureCallBack(client.responseErrorMessage(statusCode: statusCode, response: response, error: error as Error))
【讨论】:
failureCallBack(client.responseErrorMessage(statusCode: statusCode, response: response, error: error)) 中的任何更改,因为当我们更改 typealias APIClientResponseCallBack 然后在 failureCallBack error: error 中发生错误跨度> 无法使用类型为“(statusCode:Int?,响应:AnyObject?,错误:错误?)”的参数列表调用“responseCallBack”,面临此问题以上是关于Alamofire - 从 Swift 2 转换为 Swift 3 时出错的主要内容,如果未能解决你的问题,请参考以下文章
如何将 json 数据从 alamofire 转换为 swift 对象
转换为 swift 2.0 时,构建的 Alamofire 3 失败
Alamofire 自定义响应从 Alamofire v1.3 迁移到 3.0(和 Swift 2 语法)