MoyaMapper是基于 Moya 和 SwiftyJSON 封装的工具,以 Moya 的 plugin 的方式来实现间接解析,支持RxSwift 。
定义一个继承于ModelableParameterType的类
final class NetParameter : ModelableParameterType { var successValue: String { return "false" } var statusCodeKey: String { return "error" } var tipStrKey: String { return "" } var modelKey: String { return "results" } }
以plugin的方式传递给MoyaProvider
let lxfNetTool = MoyaProvider<LXFNetworkTool>(plugins: [MoyaMapperPlugin(NetParameter())])
创建一个继承于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数据图
,结合 Example
食用更佳~
默认安装
MoyaMapper默认只安装Core下的文件
pod 'MoyaMapper'
RxSwift拓展
pod 'MoyaMapper/Rx'
MoyaMapper is available under the MIT license. See the LICENSE file for more info.
LinXunFeng
email: 598600855@qq.com
Blogs
问题内容: 我正在尝试从网站获取JSON并进行解析,然后再将其放入iOS视图中。 这是我的代码; 这是JSON的链接; 我在这里做错了什么? 问题答案: 这两个功能对我有用:
问题内容: 我有一个Java服务器应用程序,可以下载CSV文件并进行解析。解析可能需要5到45分钟,并且每小时都要进行一次。此方法是应用程序的瓶颈,因此不是过早的优化。到目前为止的代码: 是否有现有的库可以帮助我加快速度?我可以改善现有代码吗? 问题答案: 您看过Apache Commons CSV吗? 使用注意事项 请记住,仅返回数据视图,这意味着原始对象不符合垃圾回收的条件,同时引用了任何视图
本文向大家介绍基于Pytorch SSD模型分析,包括了基于Pytorch SSD模型分析的使用技巧和注意事项,需要的朋友参考一下 本文参考github上SSD实现,对模型进行分析,主要分析模型组成及输入输出大小.SSD网络结构如下图: 每输入的图像有8732个框输出; VGG基础网络结构: 输出为: SSD中添加的网络 add_extras函数构建基本的卷积层 输出为: multibox函数得到
本文向大家介绍快速了解Boost.Asio 的多线程模型,包括了快速了解Boost.Asio 的多线程模型的使用技巧和注意事项,需要的朋友参考一下 Boost.Asio 有两种支持多线程的方式,第一种方式比较简单:在多线程的场景下,每个线程都持有一个io_service,并且每个线程都调用各自的io_service的run()方法。 另一种支持多线程的方式:全局只分配一个io_service,
所以我试图弄清楚如何使用Realm,Moya和ObjectMapper。 我使用Moya向我的API发出请求。我使用Realm将返回的数据保存在本地数据库中。并且我使用ObjectMapper将JSON对象映射到校正领域变量。 然而,现在我遇到了一个问题,我不确定如何解码JSON响应以便将其通过映射器。 下面是我的莫亚密码: 错误发生在这一行: 类如下所示: 我明白为什么我会犯这个错误,但我不知道
Keras泛型模型接口是用户定义多输出模型、非循环有向模型或具有共享层的模型等复杂模型的途径 这部分的文档假设你已经对Sequential模型已经比较熟悉 让我们从简单一点的模型开始 第一个模型:全连接网络 Sequential当然是实现全连接网络的最好方式,但我们从简单的全连接网络开始,有助于我们学习这部分的内容。在开始前,有几个概念需要澄清: 层对象接受张量为参数,返回一个张量。张量在数学上只
问题内容: 我正在尝试解析以下JSON 这是我从Web服务获取的JSON,并且我正在使用以下代码对其进行解析: 我收到以下错误 该操作无法完成。(NSURLErrorDomain错误-1005。)致命错误:在展开可选值时意外发现nil 我该如何解决? 问题答案: 您的网址返回了以下JSON- 最外面的方括号表示根对象是一个数组,因此尝试将JSON解析的结果强制转换为NSDictionary会导致问
问题内容: 有人可以帮我为什么下面的代码不起作用吗?我正在Xcode.1 Playground中对其进行测试 问题答案: 操场是沙盒,因此您将无法仅从用户文件夹中的任何位置抓取文件。以下是将该文件添加到游乐场以使其可访问的方法: 在Finder中找到您的“ .playground”文件 右键单击并选择“显示包装内容” 您应该看到“ timeline.xctimeline”,“ contents.x