文档章节

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

rainckoo
 rainckoo
发布于 2015/02/26 20:46
字数 311
阅读 390
收藏 0
点赞 0
评论 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 ⋅ 0

Alamofire的设计之道

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

黄文臣 ⋅ 2017/06/15 ⋅ 0

深入理解Moya

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

黄文臣 ⋅ 2017/08/11 ⋅ 0

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

/ 向服务器发送请求: request实际上有四个参数,但是后两个参数都设定为了默认值,所以在调用的时候只要初始化前两个参数就可以。 第一个参数是设定向服务器发起的请求的方法,通常为GET方法...

rainckoo ⋅ 2015/02/25 ⋅ 0

使用swiftyJson和Alamofire做网络请求,以及json数据的解析

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

issac宝华 ⋅ 2016/09/05 ⋅ 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 ⋅ 0

IOS拦截重定向请求(302)的几种方式

前言 在多数情况下,我们做的网络请求是返回200状态码的,但也有返回302的时候,比如使用基于Oauth2认证协议的API时,在认证阶段,需要提供一个回调地址,当用户授权后,服务器会返回一个302...

DragonFK ⋅ 2015/07/12 ⋅ 0

Swift 3.0封装 URLSession 的GET/SET方法代替 Alamofire

升级到 Swift3.0 之后,新版本的 Alamofire 只支持 iOS 9.0 以上的系统,如果要适配 iOS 8,需要自己封装 URLSession,下面是笔者的方案: 这里使用的是 Swift 自己的原生类型 URLSession,而...

cg1991130 ⋅ 2016/10/10 ⋅ 0

swift4,网络请求工具Moya

在OC中,我们使用AFNetworking来进行网络请求,简洁方便。在swift中,我们使用Moya来进行网络请求,Moya封装了Alamofire,可以更加方便的进行网络请求。初次使用Moya,还是觉得稍稍有些不习惯...

小曼Study ⋅ 05/29 ⋅ 0

MVVM与Controller瘦身实践

前言 MVC是一个做iOS开发都知道的设计模式,也是Apple官方推荐的设计模式。实际上,Cocoa Touch就是按照MVC来设计的。 这里,我们先不讲MVC是什么,我们先来谈谈软件设计的一些原则或者说理念...

黄文臣 ⋅ 2017/06/14 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

思路分析 如何通过反射 给 bean entity 对象 的List 集合属性赋值?

其实 这块 大家 去 看 springmvc 源码 肯定可以找到实现办法。 因为 spirngmvc 的方法 是可以 为 对象 参数里面的 list 属性赋值的。 我也没有看 具体的 mvc 源码实现,我这里只是 写一个 简...

之渊 ⋅ 28分钟前 ⋅ 0

vim使用手册--配对括号的查找

1、把光标放在标记有(、[或{处。 2、按%字符 3、此时光标的位置应当在配对的括号处 4、再次按%就可以跳回配对的第一个括号处。

dragon_tech ⋅ 32分钟前 ⋅ 0

c++ 、object-c printf,%02X和%x有什么区别 ?

%x即按十六进制输出,英文字母小写,右对齐。 %02X有以下变化:英文字母变大写,如果输出字符不足两位的,输出两位宽度,右对齐,空的一位补0。超过两位的,全部输出。 如果不用 %02x 会出现...

yizhichao ⋅ 37分钟前 ⋅ 0

Spring源码解析(七)——实例创建(中)

前言 上一节讲到了,Spring 会根据实例的作用域执行不同的创建逻辑,分别是 Singleton、Prototype、其他 Scope,其中 Singleton 会调用 getSingleton 从缓存中获取,缓存中没有才会创建实例;...

MarvelCode ⋅ 38分钟前 ⋅ 0

Thrift RPC实战(六) spring集成thrift

1.服务端设置 对泛型Thrift Service的支持, 通过采用spring配置以及反射的方式来实现.对于一个服务提供者来说,需要提供端口,接口以及接口实现类,因此在接口中spring配置文件中配置如下 <!...

lemonLove ⋅ 40分钟前 ⋅ 0

oracle11g自动分区使用

为什么使用自动分区? 在oracle11g之前,oracle是不支持自动分区功能的,这就可能导致我们系统在运行一段时间之后,就需要看看分区是否创建或者写触发器进行创建分区,否则就会导致数据无法入...

strict_nerd ⋅ 51分钟前 ⋅ 0

Spring mvc ViewResolver视图解析器实现机制

概要 我们在controller里面经常这样return一个ModelAndView。 return new ModelAndView("userList", "users", userList); DispatcherServlet 靠 ViewResolver 把 userList 解析为 /WEB-INF......

轨迹_ ⋅ 今天 ⋅ 0

策略模式

1.策略模式 策略模式是同一个行为的不同处理办法。策略模式和简单工厂模式的区别:1.策略模式主要是方法的执行方式,工厂模式要获取的对象。两者的侧重点不同。 ...

Cobbage ⋅ 今天 ⋅ 0

行政区划代码转为字典形式

原数据为: http://www.mca.gov.cn/article/sj/xzqh/2018/201804-12/201804-06041553.html 手动替换了一下格式,并使用下面的代码处理. # 输入格式s = """110000:北京市110101:东城区1101...

漫步海边小路 ⋅ 今天 ⋅ 0

android apk 签名

创建key,需要用到keytool.exe (位于C:\Program Files\Java\jdk1.6.0_10\bin目录下),使用产生的key对apk签名用到的是jarsigner.exe (位于C:\Program Files\Java\jdk1.6.0_10\bin目录下),把...

国仔饼 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部