ObjectMapper bindings for Moya and RxSwift
ObjectMapper bindings for Moya for easier JSON serialization. Includes RxSwift bindings as well.
pod 'Moya-ObjectMapper'
The subspec if you want to use the bindings over RxSwift.
pod 'Moya-ObjectMapper/RxSwift'
The subspec if you want to use the bindings over ReactiveSwift.
pod 'Moya-ObjectMapper/ReactiveSwift'
Create a
Classor
Structwhich implements the
Mappableprotocol.
import Foundation import ObjectMapper// MARK: Initializer and Properties struct Repository: Mappable {
var identifier: Int! var language: String? var url: String!
// MARK: JSON init?(map: Map) { }
mutating func mapping(map: Map) { identifier
1. Without RxSwift and ReactiveSwift
GitHubProvider.request(.userRepositories(username), completion: { result invar success = true var message = "Unable to fetch from GitHub" switch result { case let .success(response): do { if let repos = try response.mapArray(Repository) { self.repos = repos } else { success = false } } catch { success = false } self.tableView.reloadData() case let .failure(error): guard let error = error as? CustomStringConvertible else { break } message = error.description success = false }
})
2. With RxSwift
GitHubProvider.request(.userRepositories(username)) .mapArray(Repository.self) .subscribe { event -> Void in switch event { case .next(let repos): self.repos = repos case .error(let error): print(error) default: break } }.addDisposableTo(disposeBag)2. With ReactiveSwift
GitHubProvider.request(.userRepositories(username)) .mapArray(Repository.self) .start { event in switch event { case .value(let repos): self.repos = repos case .failed(let error): print(error) default: break } }Contributing
Issues and pull requests are welcome!
Author
Ivan Bruel @ivanbruel
Maintainers
Bruno Oliveira @bmoliveira
License
Moya-ObjectMapper is released under an MIT license. See LICENSE for more information.