Swift网络封装库Moya中文手册之RxSwift
2016-06-29 14:45
316 查看
RxSwift
Maya提供了一个可选的MoyaProvider子类 -
RxMoyaProvider。在网络请求完成时,我们不再使用
request()函数的回调闭包,而是使用
Observable。
RxMoyaProvider可以像
MoyaProvider一样创建和使用:
let provider = RxMoyaProvider<GitHub>()
然后,你就可以干很多事情:
provider.request(.Zen).subscribe { (event) -> Void in switch event { case .Next(let response): // do something with the data case .Error(let error): // handle the error default: break } }
对于
RxMoyaProvider,在请求被订阅前,不会发起网络请求。如果网络请求完成之前,订阅的信号被销毁了,请求将被取消。
如果请求正常完成,将会发生两件事:
observable 发送一个
Moya.Response类型的值 。
observable 结束.
如果请求发生了错误(通常是NSURLSession错误),错误码是网络请求失败的status code,如果有的话,和response data,如果也有的话。
Moya.Response类型包含一个
statusCode,一些
data,和一个可以为空的
NSURLResponse。不管你习惯
subscribeNext还是
map,都可以使用这些数据。
更棒的是,Moya提供了一些
Observable的扩展,让你更简单的处理
MoyaResponses。
filterStatusCodes()提供了一系列status code。如果返回的status code不在其中,将生成一个error。
filterStatusCode()用于查找特殊的status cod,如果没有找到,将生成error。
filterSuccessfulStatusCodes()筛选200系列的status codes。
filterSuccessfulStatusAndRedirectCodes()筛选200-300系列的status codes。
mapImage()尝试将返回数据转换成
UIImage,失败的话将生成error。
mapJSON()尝试将返回数据转换成 JSON对象,失败的话将生成error。
mapString()尝试将返回数据转换成字符串,失败的话将生成error。
在网络请求错误的情况下,error的
domain是
MoyaErrorDomain。 通常code是
MoyaErrorCode的
rawValue。底层的errors提供了原始的返回数据,在
NSError的
userInfo中,关键字为"data"。
转载请注明出处http://www.cnblogs.com/liuliuliu/p/5626788.html,并注明转载。
原文链接
翻译: bibibi_liuliu
联系方式: 395985239@qq.com
相关文章推荐
- libevent学习笔记 - 0 Preliminaries
- java网络编程:RandomAccessFile, URLConnection和多线程机制实现了Http下载
- 获取网络图片,并保存到本地
- 传智播客网络营销课程大升级,改变从“薪”开始
- 经典的BPN带动量的误差反向传播神经网络类代码示例
- java网络编程: UDP 广播与多播的实现
- node.js http
- AutoCAD单机版、网络版授权方法
- java网络编程:MulticastSocket类
- R-FCN:基于区域的全卷积网络来检测物体
- java网络编程:DatagramSocket类简单实现文件下载
- java网络编程:DatagramSocket类
- Swift网络封装库Moya中文手册之Targets
- HTTP状态码及其含义
- Unity判断网络是否连接 以及 判断是否连接WiFi
- 使用自定义签名的https的ssl安全问题解决和metro的webservice调用
- 子网掩码的计算及与子网数、主机数关系
- httpd简介
- Google深度学习笔记 循环神经网络实践
- linux内核工程导论-网络:tcp拥塞控制——PRR