测试已测试 | ✗ |
语言语言 | SwiftSwift |
许可 | MIT |
发布最新发布 | 2018年2月 |
SPM支持 SPM | ✗ |
由 Sam Watts、Raman Fedaseyeu、Kingiol、Juvenal Guzman 维护。
要运行示例项目,首先克隆仓库,然后从 Example 目录运行 pod install
。
Moya-Argo 通过 CocoaPods 提供。要安装它,请简单地将以下行添加到您的 Podfile 中
pod "Moya-Argo"
如果使用 Moya/RxSwift 或 Moya/ReactiveCocoa,则提供 RxSwift 和 Reactive cocoa 的细目。pod 名称分别为 Moya-Argo/RxSwift
和 Moya-Argo/ReactiveCocoa
第一步是拥有一个可以被 Argo 映射的类/结构体
struct ArgoUser: Decodable {
let id: Int
let name: String
let birthdate: String?
static func decode(json: JSON) -> Decoded<ArgoUser> {
return curry(ArgoUser.init)
<^> json <| "id"
<*> json <| "name"
<*> json <|? "birthdate"
}
}
如果您已经使用 Moya 设置了请求,则可以在响应上使用 mapObject
和 mapArray
方法
provider
.request(.AllUsers) { result in
if case let .Success(response) = result {
do {
let argoUsers:[ArgoUser] = try response.mapArrayWithRootKey("users")
print("mapped to users: \(argoUsers)")
} catch {
print("Error mapping users: \(error)")
}
}
}
如果您使用 Moya RxSwift 扩展,则 Observable 上有一个扩展可以简化映射
provider
.request(.AllUsers)
.mapArray(ArgoUser.self, rootKey: "users")
.observeOn(MainScheduler.instance)
.subscribeNext { users in
self.users = users
self.tableView.reloadData()
}.addDisposableTo(disposeBag)
对于 ReactiveCocoa,SignalProducer 上也有类似的扩展
provider
.request(.AllUsers)
.mapArray(ArgoUser.self, rootKey: "users")
.observeOn(UIScheduler())
.start { event in
switch event {
case .Next(let users):
self.users = users
self.tableView.reloadData()
case .Failed(let error):
print("error: \(error)")
default: break
}
}
示例项目展示了可以用来提高代码可读性的某些示例方法
欢迎提交问题/拉取请求/反馈
我从Moya-ObjectMapper项目中获得了许多指导。如果你在使用ObjectMapper进行序列化, Definitely建议你查看它们。
Sam Watts,[email protected]
Moya-Argo 适用于MIT许可。有关更多详细信息,请参阅LICENSE文件。