Restofire-Gloss 1.0.1

Restofire-Gloss 1.0.1

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布最新版本2016 年 5 月
SPM支持 SPM

Rahul Katariya 维护。



Restofire-Gloss: A component library for Restofire to serialize responses into Gloss

Restofire-Gloss

Restofire-Gloss 是一个用于将响应序列化为 Gloss 的 Restofire 组件库

要求

  • iOS 8.0+ / Mac OS X 10.10+ / tvOS 9.0+ / watchOS 2.0+
  • Xcode 7.3+

安装

Swift Package Manager

要将 Restofire 作为 Swift Package Manager 包使用,只需在您的 Package.swift 文件中添加以下内容。

import PackageDescription

let package = Package(
    name: "HelloRestofireGloss",
    dependencies: [
        .Package(url: "https://github.com/Restofire/Restofire-Gloss.git", majorVersion: 1)
    ]
)

使用方法

配置 Restofire

import Restofire

class AppDelegate: UIResponder, UIApplicationDelegate {

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        // Override point for customization after application launch.

        Restofire.defaultConfiguration.baseURL = "http://www.mocky.io/v2/"
        Restofire.defaultConfiguration.headers = ["Content-Type": "application/json"]
        Restofire.defaultConfiguration.logging = true
        Restofire.defaultConfiguration.authentication.credential = NSURLCredential(user: "user", password: "password", persistence: .ForSession)
        Restofire.defaultConfiguration.validation.acceptableStatusCodes = [200..<300]
        Restofire.defaultConfiguration.validation.acceptableContentTypes = ["application/json"]
        Restofire.defaultConfiguration.retry.retryErrorCodes = [NSURLErrorTimedOut,NSURLErrorNetworkConnectionLost]
        Restofire.defaultConfiguration.retry.retryInterval = 20
        Restofire.defaultConfiguration.retry.maxRetryAttempts = 10
        let sessionConfiguration = NSURLSessionConfiguration.defaultSessionConfiguration()
        sessionConfiguration.timeoutIntervalForRequest = 7
        sessionConfiguration.timeoutIntervalForResource = 7
        sessionConfiguration.HTTPAdditionalHeaders = Manager.defaultHTTPHeaders
        Restofire.defaultConfiguration.manager = Alamofire.Manager(configuration: sessionConfiguration)

        return true
  }

}

创建 Gloss 模型

import Gloss

struct Person: Decodable {

    var id: Int
    var name: String

    init(id: Int, name: String) {
        self.id = id
        self.name = name
    }

    init?(json: JSON) {
        guard let id: Int = "id" <~~ json,
            let name: String = "name" <~~ json else { return nil }

        self.id = id
        self.name = name
    }

}

extension Person: Equatable { }

func ==(lhs: Person, rhs: Person) -> Bool {
    return lhs.id == rhs.id && lhs.name == rhs.name
}

创建服务

import Restofire

class PersonGETService: Requestable {

    typealias Model = Person
    var path: String = "56c2cc70120000c12673f1b5"

}

使用服务

import Restofire

class ViewController: UIViewController {

    var person: Person!
    var requestOp: RequestOperation!

    func getPerson() {
        requestOp = PersonGETService().executeTask() {
            if let value = $0.result.value {
                person = value
            }
        }
    }

    deinit {
        requestOp.cancel()
    }

}

许可证

Restofire 在 MIT 许可下发布。有关详细信息,请参阅 LICENSE