基于 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

Beginning ARKit for iPhone and iPad

Beginning ARKit for iPhone and iPad

Wallace Wang / Apress / 2018-11-5 / USD 39.99

Explore how to use ARKit to create iOS apps and learn the basics of augmented reality while diving into ARKit specific topics. This book reveals how augmented reality allows you to view the screen on ......一起来看看 《Beginning ARKit for iPhone and iPad》 这本书的介绍吧!

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

各进制数互转换器

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

在线图片转Base64编码工具