基于 Moya 和 SwiftyJSON 的快速解析模型工具 MoyaMapper

码农软件 · 软件分类 · 网络工具包 · 2019-02-24 17:27:16

软件介绍

MoyaMapper是基于 Moya 和 SwiftyJSON 封装的工具,以 Moya 的 plugin 的方式来实现间接解析,支持RxSwift 。

Usage

一、注入

  1. 定义一个继承于ModelableParameterType的类

final class NetParameter : ModelableParameterType {
    var successValue: String {
        return "false"
    }

    var statusCodeKey: String {
        return "error"
    }

    var tipStrKey: String {
        return ""
    }

    var modelKey: String {
        return "results"
    }
}
  1. 以plugin的方式传递给MoyaProvider

let lxfNetTool = MoyaProvider<LXFNetworkTool>(plugins: [MoyaMapperPlugin(NetParameter())])

二、定义模型

  1. 创建一个继承于Modelable的结构体

struct MyModel: Modelable {
    
    var _id = ""
    ......
    
    init?(_ json: JSON) {
        
    }
    
    mutating func mapping(_ json: JSON) {
        self._id = json["_id"].stringValue
        ......
    }
}

三、解析

这里只贴出主要代码

  • Normal

lxfNetTool.request(.data(type: .all, size: 10, index: 1)) { result in
    guard let response = result.value else { return }
    
    // Models
    guard let models = try? response.mapArray(MyModel.self) else {return}
    for model in models {
        print("id -- \(model._id)")
    }
    
    // 使用自定义模型参数类
    /*
    guard let models = try? response.mapArray(MyModel.self, params: { () -> (ModelableParameterType) in
        return CustomParameter()
    }) else {return}
    */
}
  • Rx

// let rxRequest: Single<Response>

// MARK: Rx
let rxRequest = lxfNetTool.rx.request(.data(type: .all, size: 10, index: 1))

// Models
rxRequest.mapArray(MyModel.self).subscribe(onSuccess: { models in
    for model in models {
        print("id -- \(model._id)")
    }
}).disposed(by: dispseBag)

// Models + Result
rxRequest.mapArrResult(MyModel.self).subscribe(onSuccess: { (result, models) in
    print("isSuccess --\(result.0)")
    print("tipStr --\(result.1)")
    print("models count -- \(models.count)")
}).disposed(by: dispseBag)

// 获取指定路径的值
rxRequest.fetchString(keys: [0, "_id"]).subscribe(onSuccess: { str in
    print("str -- \(str)")
}).disposed(by: dispseBag)

JSON数据对照

为方便理解,这里给出具体使用JSON数据图,结合 Example食用更佳~

JSON数据对照

CocoaPods

  • 默认安装

MoyaMapper默认只安装Core下的文件

pod 'MoyaMapper'
  • RxSwift拓展

pod 'MoyaMapper/Rx'

License

MoyaMapper is available under the MIT license. See the LICENSE file for more info.

Author

LinXunFeng

本文地址:https://www.codercto.com/soft/d/46.html

乌合之众

乌合之众

(法)勒庞 / 冯克利 / 中央编译出版社 / 2011-5-1 / 16.00元

古斯塔夫・勒庞 Gustave Le Bon(1841-1931) 法国著名社会心理学家。他自1894年始,写下一系列社会心理学著作,以本书最为著名;在社会心理学领域已有的著作中,最有影响的,也是这本并不很厚的《乌合之众》。古斯塔夫・勒庞在他在书中极为精致地描述了集体心态,对人们理解集体行为的作用以及对社会心理学的思考发挥了巨大影响。《乌合之众--大众心理研究》在西方已印至第29版,其观点新颖,语......一起来看看 《乌合之众》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具