用Alamofire进行网络请求的一段代码解析(一)
博客专区 > rainckoo 的博客 > 博客详情
用Alamofire进行网络请求的一段代码解析(一)
rainckoo 发表于3年前
用Alamofire进行网络请求的一段代码解析(一)
  • 发表于 3年前
  • 阅读 4672
  • 收藏 1
  • 点赞 0
  • 评论 0

【腾讯云】新注册用户域名抢购1元起>>>   

        /*

            向服务器发送请求:

            request实际上有四个参数,但是后两个参数都设定为了默认值,所以在调用的时候只要初始化前两个参数就可以。

            第一个参数是设定向服务器发起的请求的方法,通常为GET方法和POST方法。

            第二个参数就是URL地址。

            第三个参数是填写一些必要的信息,比如说使用密钥。

            该方法返回一个Alamofire.Request对象

        

            responseJSON方法有一个必包作为参数。这个必包有四个参数,没有返回值。但是responseJSON有一个Alamofire.request的返回值。这个返回值可以不使用。

            下面的responseJSON的写法是闭包Trailing

            参数列表实际上是一个元组,所以,不关心的元素,可以用下划线忽略掉。

        

            问题:如何实现网络请求完成后跳用responseJSON()方法?

        */

        Alamofire.request(.GET, "https://api.500px.com/v1/photos", parameters:["consumer_key": str]).responseJSON() {

            (_, _, JSON, _) in

            let photoInfos = (

                JSON?.valueForKey("photos") as [NSDictionary]

                ).filter({

                    /*

                        filter是一个数组的过滤函数,它有一个闭包参数。闭包参数有一个任意类型的参数,并返回一个bool值。当bool值为真时,将对应的数组的元素存放到一个新数组中。

                    

                        这个过滤条件可以解读为,一个元素为字典的数组调用filter方法,将字典中key“nsfw”的值为false的字典保存到新的数组中。

                    */

                        ($0["nsfw"] as Bool) == false

                }).map(){

                    /*

                        map函数是数组的一个函数,对于每个数组中的元素进行处理。它有一个返回值为任意类型的闭包。它的返回值是一个任意类型的数组。

                        

                        在这个例子里,闭包的方法是把字典的idimage_url关键字的值对PhotoInfo进行初始化,并生成一个PhotoInfo的对象数组。

                    */

                    PhotoInfo(

                        id: $0["id"] as Int, url: $0["image_url"] as String

                    )

                }

            

        }


  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 2
博文 27
码字总数 6114
×
rainckoo
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: