Omicron 0.1.2

Omicron 0.1.2

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布最后发布2017 年 7 月
SwiftSwift 版本3.0.2
SPM支持 SPM

Dimitris C. 维护。



Omicron 0.1.2

  • Dimitris Chatzieleftheriou, Harris Spentzas

BuddyBuild

一个小型 API 服务框架

要求

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

安装

Swift 包管理器

要将 Omicron 设置为 Swift 包管理器 包,只需在您的 Package.swift 文件中添加以下内容。

import PackageDescription

let package = Package(
    name: "HelloOmicron",
    dependencies: [
        .Package(url: "https://github.com/dimtris-c/Omicron.git", "0.1")
    ]
)

手动

如果您不希望使用上述任何依赖管理器,可以将 Omicron 手动集成到项目中。

Git 子模块

  • 打开终端,使用 cd 命令进入您的顶级项目目录,然后运行以下命令(如果你的项目还没有初始化为 Git 仓库)
$ git init
  • 通过运行以下命令将 Omicron 作为 Git 子模块 添加
$ git submodule add https://github.com/dimitris-c/Omicron.git
$ git submodule update --init --recursive
  • 打开新的 Omicron 文件夹,并将 Omicron.xcodeproj 拖动到您的应用程序 Xcode 项目的 Project Navigator 中。

    它应该嵌套在您的应用程序的蓝色项目图标之下。它在所有其他 Xcode 组之上或之下并不重要。

  • 在 Project Navigator 中选择 Omicron.xcodeproj,并验证其部署目标是否与您的应用程序目标的部署目标匹配。

  • 接下来,在 Project Navigator 中选择您的应用程序项目(蓝色项目图标)进入目标配置窗口,并在侧边栏的“目标”部分中选择应用程序目标。

  • 在该窗口顶部的标签栏中,打开“常规”面板。

  • 在“嵌入式二进制文件”部分下单击 + 按钮。

  • 您将看到两个不同的 Omicron.xcodeproj 文件夹,每个文件夹都有两个不同的 Omicron.framework 版本,嵌套在 Products 文件夹中。

    选择哪个 Products 文件夹并不重要。

  • 选择 Omicron.framework

  • 这就完成了!

Omicron.framework 将自动添加为目标依赖项,并作为链接框架和嵌入式框架在复制文件构建阶段中嵌入,这就是您在模拟器和设备上构建所需的所有内容。

嵌入式二进制文件

  • https://github.com/dimitris-c/Omicron/releases下载最新版本。
  • 接下来,在 Project Navigator 中选择您的应用程序项目(蓝色项目图标)进入目标配置窗口,并在侧边栏的“目标”部分中选择应用程序目标。
  • 在该窗口顶部的标签栏中,打开“常规”面板。
  • 在“嵌入式二进制文件”部分下单击 + 按钮。
  • 添加下载的Omicron.framework
  • 这就完成了!

使用方法

服务的初始设置。

enum GithubService {
    case user(name: String)
}

extension GithubService: Service {
    
    var baseURL: URL { return URL(string: "https://api.github.com")! }
    
    var path: String {
        switch self {
        case .user(let name): return "/users/\(name)"
        }
    }
    
    var method: HTTPMethod {
        return .get
    }
    
    var params: RequestParameters {
        return RequestParameters.default
    }
    
}

典型使用方法

let service = APIService<GithubService>()

service.callJSON(with: .user(name: "dimitris-c")) { (success, result, response) in
    if let json = result.value, success {
        print(json)
    }
}

要取消请求,每个调用API的方法都返回一个 Alamofire 请求。

let service = APIService<GithubService>()

let request = service.callJSON(with: .user(name: "dimitris-c")) { (success, result, response) in
    if let json = result.value, success {
        print(json)
    }
}

//later on...
request.cancel()

使用 RxSwift

let service = RxAPIService<GithubService>()

_ = service.callJSON(with: .user(name: "dimitris-c")).subscribe(onNext: { json in
    print(json)
})

自定义解析到强类型对象

Omicron 的优点之一是可以为返回特定模型的请求定义自定义解析器。我们已经提供了 JSONResponse,它会直接从服务器输出原始 JSON 数据。

struct GithubUser {
    let id: String
    let user: String
    let name: String
    
    init(with json: JSON) {
        self.id = json["id"].stringValue
        self.user = json["user"].stringValue
        self.name = json["name"].stringValue
    }
}

class GithubUserResponse: APIResponse<GithubUser> {
    override func toData(rawData data: JSON) -> GithubUser {
        return GithubUser(with: data)
    }
}

let service = ApiService<GithubService>()
var user: GithubUser?
service.call(with: .user(name: "dimitris-c"), parse: GithubUserResponse(), { (success, result, response) in
        if success {
            user = result.value 
        }
})

许可协议

Omicron 采用 MIT 许可协议发布。有关详细信息,请参阅LICENSE