用Alamofire进行网络请求的一段代码解析(一)
//AnyObject:json
//Mark:利用alamofire 发送网络请求,并返回数据json:AnyObject,需要强制转换为NSDictionary字典类型。
/*
向服务器发送请求:
request实际上有四个参数,但是后两个参数都设定为了默认值,所以在调用的时候只要初始化前两个参数就可以。
第一个参数是设定向服务器发起的请求的方法,通常为GET方法和POST方法。
第二个参数就是URL地址。
第三个参数是填写一些必要的信息,比如说使用密钥。
该方法返回一个Alamofire.Request对象
responseJSON方法有一个必包作为参数。这个必包有四个参数,没有返回值。但是responseJSON有一个Alamofire.request的返回值。这个返回值可以不使用。
下面的responseJSON的写法是闭包Trailing。
参数列表实际上是一个元组,所以,不关心的元素,可以用下划线忽略掉。
问题:如何实现网络请求完成后跳用responseJSON()方法?
*/
func alamofiretest2(){
let req1:Request = Alamofire.request(.GET, "https://api.500px.com/v1/photos", parameters: ["consumer_key" : "ztaqNNwFbXcP1Sgeaqsf60sQsRxxN0MZwSXeL3Df"])
req1.responseJSON { (json) -> Void in
//print(json)
if let JSON = json as? NSDictionary{
var safePhotos = JSON.valueForKey("photos") as? [NSDictionary]
/*
filter是一个数组的过滤函数,它有一个闭包参数。闭包参数有一个任意类型的参数,并返回一个bool值。当bool值为真时,将对应的数组的元素存放到一个新数组中。
这个过滤条件可以解读为,一个元素为字典的数组调用filter方法,将字典中key为“nsfw”的值为false的字典保存到新的数组中。
*/
safePhotos = safePhotos?.filter{
($0["nsfw"] as! Bool ) == false
}
//
/*
map函数是数组的一个函数,对于每个数组中的元素进行处理。它有一个返回值为任意类型的闭包。它的返回值是一个任意类型的数组。
在这个例子里,闭包的方法是把字典的id和image_url关键字的值对PhotoInfo进行初始化,并生成一个PhotoInfo的对象数组。
*/
let newPhotos = safePhotos?.map() {
PhotoInfo(id: $0["id"] as Int, url: $1["url"] as String)
}
//
}
}
}
//requestNSURL,NSData(JSON)
//Mark:利用alamofire 发送网络请求,并返回数据json:NSData 和请求地址URL:NSURLRequest
func alamofiretest1(){
let req1:Request = Alamofire.request(.GET, "https://api.500px.com/v1/photos", parameters: ["consumer_key" : "ztaqNNwFbXcP1Sgeaqsf60sQsRxxN0MZwSXeL3Df"])
req1.response { (re_NSURL, _ , json, e ) -> Void in
print(re_NSURL!)
print(json)
}
}
转载于:https://www.cnblogs.com/karling/p/5056609.html
用Alamofire进行网络请求的一段代码解析(一)相关推荐
- 「Python 编程」编码实现网络请求库中的 URL 解析器
相信各位 Python 开发者都用过 Requests 库,有些朋友还用过 WebSockets 库.这里回顾一下它们的基本用法,例如使用 Requests 库向目标网站发出 GET 请求: impo ...
- JS 借助 pako.js 实现网络请求获取 gzip 数据流并解析, 解决汉字乱码
1, 下载 pako.js => http://nodeca.github.io/pako/#Deflate.prototype.onData 2, 首先需要了解一下 XMLHttpReques ...
- 一步步搭建Retrofit+RxJava+MVP网络请求框架(二)
在前面已经初步封装了一个MVP的网络请求框架,那只是个雏形,还有很多功能不完善,现在进一步进行封装.添加了网络请求时的等待框,retrofit中添加了日志打印拦截器,添加了token拦截器,并且对Da ...
- 一步步搭建Retrofit+RxJava+MVP网络请求框架(二),个人认为这次封装比较强大了
在前面已经初步封装了一个MVP的网络请求框架,那只是个雏形,还有很多功能不完善,现在进一步进行封装.添加了网络请求时的等待框,retrofit中添加了日志打印拦截器,添加了token拦截器,并且对Da ...
- 一步步搭建Retrofit+RxJava+MVP网络请求框架(二),个人认为这次封装比较强大了...
在前面已经初步封装了一个MVP的网络请求框架,那只是个雏形,还有很多功能不完善,现在进一步进行封装.添加了网络请求时的等待框,retrofit中添加了日志打印拦截器,添加了token拦截器,并且对Da ...
- 基于HttpURLConnection 网络请求工具类的封装
HttpUtils: /*** Created by xiaoyehai on 2018/5/21 0021.*/public class HttpUtils {//线程池private static ...
- ios开发循环网络请求_GitHub - JadenTeng/ResourceX: iOS网络请求,网络泛型编程,工具类的封装,基于AFNetworking 实现, NSCache数据缓存...
ResourceX 通过AFNetworking.YYModel 解析网络泛型编程简化网络请求 现如今,网络通信几乎涉及每一个app程序.对于绝大多数请求HTTP API的方法,它们的执行流程都可以分 ...
- 防止网络请求(或其他回调)引用,从而造成内存泄漏
本文的解决方案用来解决类似如:Activity请求网络,而回调传的是自身,造成Activity执行finish()后并没有被销毁,而是被网络请求持有.和其相类似的问题 正文 1.网络请求使用Activ ...
- Volley 源码解析之网络请求
Volley源码分析三部曲 Volley 源码解析之网络请求 Volley 源码解析之图片请求 Volley 源码解析之缓存机制 Volley 是 Google 推出的一款网络通信框架,非常适合数据量 ...
最新文章
- Cpp拾零(to be continued)
- android volley http请求框架
- debug 没有错,release出错
- 服务器系统与普通系统不同,服务器系统与普通系统区别
- flask 定义数据库关系(一对多) --
- 如何自己动手写一个搜索引擎?我是一份害羞的教程
- terminated 线程_深入并发,线程相关知识全解析
- 每个人心中都有一片极乐净土
- 因算法裁定“效率低下”,近150名员工遭解雇
- 中介效应分析及R实现
- 计算机软件如何永久删除,电脑上如何卸载软件? 如何从电脑上彻底删除一个软件?...
- 「转」新手淘宝天猫小卖家开店,如何做好全盘运营?
- R语言:SVD分解求解线性方程组AX=b
- ubuntu 7z解压
- (边学边练)JAVA基础学习第三天
- 前端是什么,是干嘛的
- python提取发票信息发票识别_分享一个电子发票信息提取工具(Python)
- JDBC——“CRUD”
- python提取word目录_python批量提取word内信息
- 2021/9/4王者荣耀服务器崩掉
热门文章
- python实时策略_Python策略模式
- linux 用户权限 数字,几个linux命令之用户权限相关命令
- java List转Map的三种方法(java8语法特性使用)
- 安卓添加滚轮代码_[按键精灵手机版教程]安卓实战——制作天天酷跑脚本(2)...
- mysql ( )=,(mysql)
- java查询数据比Oracle少,java对ORACLE中的于NCHAR数据的处理,查询
- oracle 批量更新_用集算器更新数据库的技巧
- cad文字插件_超好用的4个CAD应用程序,让你提升工作幸福感,裂墙推荐
- mysql ----DML(掌握)
- metasploit下载教程linux,在Debian 10/9系统上安装Metasploit Framework的方法