Moya-Argo 5.0.0

Moya-Argo 5.0.0

测试已测试
语言语言 SwiftSwift
许可 MIT
发布最新发布2018年2月
SPM支持 SPM

Sam WattsRaman FedaseyeuKingiolJuvenal Guzman 维护。



Moya-Argo 5.0.0

用法

要运行示例项目,首先克隆仓库,然后从 Example 目录运行 pod install

要求

安装

Moya-Argo 通过 CocoaPods 提供。要安装它,请简单地将以下行添加到您的 Podfile 中

pod "Moya-Argo"

细目

如果使用 Moya/RxSwift 或 Moya/ReactiveCocoa,则提供 RxSwift 和 Reactive cocoa 的细目。pod 名称分别为 Moya-Argo/RxSwiftMoya-Argo/ReactiveCocoa

用法

Argo

第一步是拥有一个可以被 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 响应映射

如果您已经使用 Moya 设置了请求,则可以在响应上使用 mapObjectmapArray 方法

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)")
            }
        }
    }

RxSwift

如果您使用 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

对于 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文件。