RyogaK / Moya-Unbox

[DEPRECATED!!] Unbox bindings for Moya and RxSwift

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Moya-Unbox

Carthage compatible

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

DEPRECATED!!

It is no longer need to use Unbox in Swift4.
For more detail: https://developer.apple.com/documentation/foundation/archives_and_serialization/encoding_and_decoding_custom_types

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

[DEPRECATED!!] Unbox bindings for Moya and RxSwift

License:MIT License


Languages

Language:Swift 100.0%