//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进行网络请求的一段代码解析(一)相关推荐

  1. 「Python 编程」编码实现网络请求库中的 URL 解析器

    相信各位 Python 开发者都用过 Requests 库,有些朋友还用过 WebSockets 库.这里回顾一下它们的基本用法,例如使用 Requests 库向目标网站发出 GET 请求: impo ...

  2. JS 借助 pako.js 实现网络请求获取 gzip 数据流并解析, 解决汉字乱码

    1, 下载 pako.js => http://nodeca.github.io/pako/#Deflate.prototype.onData 2, 首先需要了解一下 XMLHttpReques ...

  3. 一步步搭建Retrofit+RxJava+MVP网络请求框架(二)

    在前面已经初步封装了一个MVP的网络请求框架,那只是个雏形,还有很多功能不完善,现在进一步进行封装.添加了网络请求时的等待框,retrofit中添加了日志打印拦截器,添加了token拦截器,并且对Da ...

  4. 一步步搭建Retrofit+RxJava+MVP网络请求框架(二),个人认为这次封装比较强大了

    在前面已经初步封装了一个MVP的网络请求框架,那只是个雏形,还有很多功能不完善,现在进一步进行封装.添加了网络请求时的等待框,retrofit中添加了日志打印拦截器,添加了token拦截器,并且对Da ...

  5. 一步步搭建Retrofit+RxJava+MVP网络请求框架(二),个人认为这次封装比较强大了...

    在前面已经初步封装了一个MVP的网络请求框架,那只是个雏形,还有很多功能不完善,现在进一步进行封装.添加了网络请求时的等待框,retrofit中添加了日志打印拦截器,添加了token拦截器,并且对Da ...

  6. 基于HttpURLConnection 网络请求工具类的封装

    HttpUtils: /*** Created by xiaoyehai on 2018/5/21 0021.*/public class HttpUtils {//线程池private static ...

  7. ios开发循环网络请求_GitHub - JadenTeng/ResourceX: iOS网络请求,网络泛型编程,工具类的封装,基于AFNetworking 实现, NSCache数据缓存...

    ResourceX 通过AFNetworking.YYModel 解析网络泛型编程简化网络请求 现如今,网络通信几乎涉及每一个app程序.对于绝大多数请求HTTP API的方法,它们的执行流程都可以分 ...

  8. 防止网络请求(或其他回调)引用,从而造成内存泄漏

    本文的解决方案用来解决类似如:Activity请求网络,而回调传的是自身,造成Activity执行finish()后并没有被销毁,而是被网络请求持有.和其相类似的问题 正文 1.网络请求使用Activ ...

  9. Volley 源码解析之网络请求

    Volley源码分析三部曲 Volley 源码解析之网络请求 Volley 源码解析之图片请求 Volley 源码解析之缓存机制 Volley 是 Google 推出的一款网络通信框架,非常适合数据量 ...

最新文章

  1. Cpp拾零(to be continued)
  2. android volley http请求框架
  3. debug 没有错,release出错
  4. 服务器系统与普通系统不同,服务器系统与普通系统区别
  5. flask 定义数据库关系(一对多) --
  6. 如何自己动手写一个搜索引擎?我是一份害羞的教程
  7. terminated 线程_深入并发,线程相关知识全解析
  8. 每个人心中都有一片极乐净土
  9. 因算法裁定“效率低下”,近150名员工遭解雇
  10. 中介效应分析及R实现
  11. 计算机软件如何永久删除,电脑上如何卸载软件? 如何从电脑上彻底删除一个软件?...
  12. 「转」新手淘宝天猫小卖家开店,如何做好全盘运营?
  13. R语言:SVD分解求解线性方程组AX=b
  14. ubuntu 7z解压
  15. (边学边练)JAVA基础学习第三天
  16. 前端是什么,是干嘛的
  17. python提取发票信息发票识别_分享一个电子发票信息提取工具(Python)
  18. JDBC——“CRUD”
  19. python提取word目录_python批量提取word内信息
  20. 2021/9/4王者荣耀服务器崩掉

热门文章

  1. python实时策略_Python策略模式
  2. linux 用户权限 数字,几个linux命令之用户权限相关命令
  3. java List转Map的三种方法(java8语法特性使用)
  4. 安卓添加滚轮代码_[按键精灵手机版教程]安卓实战——制作天天酷跑脚本(2)...
  5. mysql ( )=,(mysql)
  6. java查询数据比Oracle少,java对ORACLE中的于NCHAR数据的处理,查询
  7. oracle 批量更新_用集算器更新数据库的技巧
  8. cad文字插件_超好用的4个CAD应用程序,让你提升工作幸福感,裂墙推荐
  9. mysql ----DML(掌握)
  10. metasploit下载教程linux,在Debian 10/9系统上安装Metasploit Framework的方法