Alamofire 4.0踩坑

来源:互联网 发布:信捷plc编程电缆 编辑:程序博客网 时间:2024/05/16 11:46

引子

之前在OC开发中习惯了AFN的各种便捷操作,到了Swift中各种想办法解决数据请求和解析问题。百思不得解,终于找到了Alamofire这个第三方库,但是这个库在普通引用上与OC的直接引用有所不同,但是使用cocoaPods导入还是相同的。

导入方法

首先我们从GitHub上下载Alamofire的最新版到本地,需要知道的是下载的文件中有Alamofire的2,3,4的各个版本的开发文档,我们对照文档即可进行数据的请求。
当然我们要注意的是它的引用方式,打开工程Alamofire的工程,我们需要关注的是它的Xcodeproj,因为我们需要使用传统的addfile将它添加到项目中,当然,即时添加到项目中了。但是你在工程中引入的时候还是会报错,所以此时,你应该添加你所引入的xcodeproj中所包含的Alamofire 的framework,具体:选中项目 TARGETS > General > Embedded Binaries > +(添加) 完成。 注意选择对应的framework,我们这里选择frameworkiOS
如图
clean,运行即可成功

利用Alamofire完成数据请求

导入数据之后,最重要的当然是进行数据请求了。Alamofire针对Swift3推出了Alamofire4作为新的框架,对一些API进行了修改。

最简单的数据请求

Alamofire.request("https://api.500px.com/v1/photos").responseJSON { (DataResponse) inprint(DataResponse.data)if let Json = DataResponse.result.value{print("Json:\\(Json) ")}

请求结果

{"error":"Consumer key missing.","status":401}

附复杂请求方式

// Alamofire 4let parameters: Parameters = ["foo": "bar"]Alamofire.request(urlString, method: .get, parameters: parameters, encoding: JSONEncoding.default).downloadProgress(queue: DispatchQueue.utility) { progress inprint("Progress: \\(progress.fractionCompleted)")}.validate { request, response, data in// Custom evaluation closure now includes data (allows you to parse data to dig out error messages if necessary)return .success}.responseJSON { response indebugPrint(response)}