AlamoArgo 0.5.3

AlamoArgo 0.5.3

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

Guillermo Chiacchio 维护。



 
依赖项
Alamofire~> 3.1
Argo~> 2.2
 

AlamoArgo 0.5.3

用法

1. 创建你的 Argo 兼容模型

import Argo
import Runes

class User {
    let id: Int
    let name: String
    let email: String?
    let role: RoleType
    let companyName: String
    let friends: [User]

    init (id: Int, name: String, email: String?, role: RoleType, companyName: String, friends: [User]) {
        self.id = id
        self.name = name
        self.email = email
        self.role = role
        self.companyName = companyName
        self.friends = friends
    }
}

extension User: Decodable {
    static func create(id: Int)(name: String)(email: String?)(role: RoleType)(companyName: String)(friends: [User]) -> User {
        return User(id: id, name: name, email: email, role: role, companyName: companyName, friends: friends)
    }

    static func decode(j: JSON) -> Decoded<User> {
        return User.create
            <^> j <| "id"
            <*> j <| "name"
            <*> j <|? "email" // Use ? for parsing optional values
            <*> j <| "role" // Custom types that also conform to Decodable just work
            <*> j <| ["company", "name"] // Parse nested objects
            <*> j <|| "friends" // Parse arrays of objects
    }
}

enum RoleType: String {
    case Admin = "Admin"
    case User = "User"
}

extension RoleType: Decodable {
    static func decode(j: JSON) -> Decoded<RoleType> {
        switch j {
        case let .String(s): return .fromOptional(RoleType(rawValue: s))
        default: return .Failure(.TypeMismatch(expected: "String", actual: "\(j)")) // Provide an Error message for a string type mismatch
        }
    }
}

2. 请求实体

keyPath 参数允许有选择性地解析 JSON 响应中的特定对象。默认值为 nil。

import AlamoArgo
import Alamofire

let URL = "https://raw.githubusercontent.com/gchiacchio/AlamoArgo/master/userdata.json"
Alamofire.request(.GET, URL)
    .responseDecodable(keyPath: "user") { 
    (response: Response<User, NSError>) in
    if let user = response.result.value {
        print(user)
    }
}

3. 请求朋友数组

keyPath 参数允许有选择性地解析 JSON 响应中的特定对象。默认值为 nil。

import AlamoArgo
import Alamofire

let URL = "https://raw.githubusercontent.com/gchiacchio/AlamoArgo/master/userdata.json"
Alamofire.request(.GET, URL)
    .responseDecodable(keyPath: "user.friends") { 
    (response: Response<[User], NSError>) in
    if let friends = response.result.value {
        print(friends)
    }
}

要求

  • iOS 8.0+ / Mac OS X 10.9+
  • Xcode 7
  • Swift 2

注意:Swift 1.2 使用版本 0.3.0

安装

AlamoArgo 通过 CocoaPods 提供。要安装它,只需将以下行添加到 Podfile:

pod "AlamoArgo"

作者

Guillermo Chiacchio,[email protected]

许可证

AlamoArgo 以 MIT 许可证可用。有关更多信息,请参阅 LICENSE 文件。