文档章节

用Alamofire进行网络请求的一段代码解析(二)

rainckoo
 rainckoo
发布于 2015/02/26 20:46
字数 311
阅读 391
收藏 0

/*

        Router路由器,这个枚举类型采用了URLRequestConvertible协议。采用这个协议的类型,是用来构造URL请求的。这个协议只有一个只读属性URLRequest,它是NSURLRequest类型的。

    

    

    */

    enum Router: URLRequestConvertible {

        

        static let baseURLString = "https://api.500px.com/v2"

        static let consumerKey = "4qf9GGuzHwjVfjmbvoQVpjjbBSjOGv7VbOrSnrgt"

        

        /*

            Swift的枚举中,下例的PopularPhotos等被称为枚举值,而枚举值所指向的值被称为关联值。括号内的类型是关联值的类型。

        */

        case PopularPhotos(Int)

        case PhotoInfo(Int, ImageSize)

        case Comments(Int, Int)

        

        var URLRequest: NSURLRequest {

            

            /*

                这是定义了一个元组。

            

                let (,) = {}()这个语句的意思是,元组(,) 用一个函数的返回值进行初始化;小括号的意思是,立即执行这个函数,将返回值赋值给元组。

            */

            let (path: String, parameters: [String: AnyObject]) = {

                switch self {

                case .PopularPhotos(let page):

                    let params = ["consumer_key": Router.consumerKey, "page": "\(page)", "feature": "popular", "rpp": "50", "include_store": "store_download", "include_states": "votes"]

                    return ("/photos", params)

                

                case .PhotoInfo(let photoID, let imageSize):

                    var params = ["consumer_key": Router.consumerKey, "iamge_size": "\(imageSize.rawValue)"]

                    return ("/photos/\(photoID)", params)

                

                case .Comments(let photoID, let commentsPage):

                    var params = ["consumer_key": Router.consumerKey, "comments": "1", "comments_page": "\(commentsPage)"]

                    return ("/photos/\(photoID)/comments", params)

                    

                }

            }()

            

            

            let URL = NSURL(string: Router.baseURLString)

            let URLRequest = NSURLRequest(URL: URL!.URLByAppendingPathComponent(path))

            let encoding = Alamofire.ParameterEncoding.URL

            

            /*

                ParameterEncoding枚举类型的encode函数没有函数体,那么返回值是如何实现的呢??

            */

            return encoding.encode(URLRequest, parameters: parameters).0

        }

        

    }


© 著作权归作者所有

共有 人打赏支持
rainckoo
粉丝 2
博文 27
码字总数 6114
作品 0
大兴
程序员
对于AlamoFire几点思考

本文由CocoaChina--BYB1132(论坛ID)翻译 原文:Thoughts On AlamoFire--Swift’s AFNetworking Implementation HTTP协议就是现代开发的同义词,对于有经验的iOS开发者来说, 熟悉并尽可能使...

刘星石
2016/03/02
15
0
Alamofire的设计之道

前言: Alamofire是一个由Swift编写的优雅的网络开发框架。 大部分用Swift编写的iOS App的网络模块都是基于Alamofire的。作为Swift社区最活跃的几个项目之一,有许多开发者在不断的对其进行完...

黄文臣
2017/06/15
0
0
深入理解Moya

前言 Moya是一个基于Alamofire开发的,轻量级的Swift网络层。Moya的可扩展性非常强,可以方便的RXSwift,PromiseKit和ObjectMapper结合。 如果你的项目刚刚搭建,并且是纯Swift的,非常推荐以...

黄文臣
2017/08/11
0
0
使用swiftyJson和Alamofire做网络请求,以及json数据的解析

目的:使用Alamofire从网络请求json数据。用swiftyJson解析json数据,最后将需要的数据赋值给一个NSArray的数组。 1.下载swiftyJson 和 Alamofire(pods方式下载) 2.在文件中引入: 3.网络请...

issac宝华
2016/09/05
329
0
iOS 第三方库收藏以及相关iOS开发工具

1.autolayout :Swift: SnapKit ,OC: Masonry 1.1.YYKit,YYKit 是一组庞大、功能丰富的 iOS 组件 1.2 MJExtension 以及 MJFresh 2.达到 60 FPS 的滚动帧率 :Swift :AsyncDisplayKit 3.swift加......

樗同学
2016/08/10
34
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

[雪峰磁针石博客]软件测试专家工具包1web测试

web测试 本章主要涉及功能测试、自动化测试(参考: 软件自动化测试初学者忠告) 、接口测试(参考:10分钟学会API测试)、跨浏览器测试、可访问性测试和可用性测试的测试工具列表。 安全测试工具...

python测试开发人工智能安全
今天
2
0
JS:异步 - 面试惨案

为什么会写这篇文章,很明显不符合我的性格的东西,原因是前段时间参与了一个面试,对于很多程序员来说,面试时候多么的鸦雀无声,事后心里就有多么的千军万马。去掉最开始毕业干了一年的Jav...

xmqywx
今天
2
0
Win10 64位系统,PHP 扩展 curl插件

执行:1. 拷贝php安装目录下,libeay32.dll、ssleay32.dll 、 libssh2.dll 到 C:\windows\system32 目录。2. 拷贝php/ext目录下, php_curl.dll 到 C:\windows\system32 目录; 3. p...

放飞E梦想O
今天
0
0
谈谈神秘的ES6——(五)解构赋值【对象篇】

上一节课我们了解了有关数组的解构赋值相关内容,这节课,我们接着,来讲讲对象的解构赋值。 解构不仅可以用于数组,还可以用于对象。 let { foo, bar } = { foo: "aaa", bar: "bbb" };fo...

JandenMa
今天
1
0
OSChina 周一乱弹 —— 有人要给本汪介绍妹子啦

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享水木年华的单曲《中学时代》@小小编辑 手机党少年们想听歌,请使劲儿戳(这里) @须臾时光:夏天还在做最后的挣扎,但是晚上...

小小编辑
今天
54
8

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部