Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Unbox bindings for Moya and RxSwift

License

nuudles/Moya-Unbox

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Moya-Unbox

Carthage compatible

Unbox bindings for Moya for fabulous JSON serialization. Supports RxSwift and ReactiveSwift bindings as well.

Installation

Carthage

github "RyogaK/Moya-Unbox"

Usage

Create a Class or Struct which implements the Unboxable protocol.

import Foundation
import Unbox

struct Repository: Unboxable {

  let identifier: Int
  let language: String?
  let url: URL

  init(unboxer: Unboxer) throws {
    identifier = try unboxer.unbox("id")
    language = unboxer.unbox("language")
    url = try unboxer.unbox("url")
  }
}

1. Without RxSwift

GitHubProvider.request(.UserRepositories(username), completion: { result in

    var success = true
    var message = "Unable to fetch from GitHub"

    switch result {
    case let .Success(response):
        do {
            if let repos = try response.unbox(array: Repository.self) {
              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))
  .unbox(array: 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)

Key Path Support

You can also unbox at specific keys and key paths by using the unbox(object:, atKey:) and unbox(object:, atKeyPath:) functions (as well as the array equivalents).

Contributing

Feel free to make issues and pull requests!

License

MIT

About

Unbox bindings for Moya and RxSwift

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Swift 100.0%