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


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

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

    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
    联系方式: 395985239@qq.com

  • 相关阅读:
    Masonry代码自动布局的简单使用。
    iOS app 如何添加引导页。
    iOS应用程序发布AppStore及更新流程
    AFN的简单二次封装
    自定义tabbar(纯代码)
    自定义tabbar(storyBoard)
    GitHub tag的使用
    cvGetSize与cvSize的区别
    越界访问,调试真的很头疼
    Hadoop对文本文件的快速全局排序
  • 原文地址:https://www.cnblogs.com/liuliuliu/p/5626788.html
Copyright © 2020-2023  润新知