• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Swift网络封装库Moya中文手册之RxSwift

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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,在请求被订阅前,不会发起网络请求。如果网络请求完成之前,订阅的信号被销毁了,请求将被取消。

如果请求正常完成,将会发生两件事:

  1. observable 发送一个 Moya.Response 类型的值 。
  2. 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的 domainMoyaErrorDomain。 通常code是 MoyaErrorCoderawValue。底层的errors提供了原始的返回数据,在 NSErroruserInfo 中,关键字为"data"。

转载请注明出处http://www.cnblogs.com/liuliuliu/p/5626788.html,并注明转载。

原文链接
翻译: bibibi_liuliu
联系方式: [email protected]


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
[Swift]LeetCode293.翻转游戏$FlipGame发布时间:2022-07-13
下一篇:
swift入门-day01-基本语法发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap