Carthage compatible Platform Swift Package Manager compatible

Transformers 是一个框架,旨在利用 Swift 编程语言的力量,优雅地转换事物。

注意:支持 Swift 版本:4.1 或更高版本

功能

安装

手动

下载项目,并将 Core 文件夹拖拽到你的项目中。

Carthage

添加到 Cartfile

github "webfrogs/Transformers" ~> 1.0

Swift Package Manager

dependencies: [
    .package(url: "https://github.com/webfrogs/Transformers.git", .upToNextMinor(from: "1.0.0")),
]

用法

在 iOS 编程中最常见的场景是处理 JSON 数据。

处理 JSON

let jsonString = """
{"key1": "value2"}
"""
let value1: String? = jsonString.data(using: String.Encoding.utf8)
    .flatMap({$0.toDictionary()})
    .flatMap({$0.value(key: "key1")})
print(value1 ?? "")

RxSwift

如果你的项目也使用了 RxSwiftTransformers 可以轻松地与 RxSwift 集成,这样就无需手动将从 HTTP 服务器获取的 JSON 数据转换为模型。你所需要做的就是定义一个遵循 Codable 协议的模型,并结合 RxSwift 提供的 map 函数使用 Transformers

这是一个示例代码

struct GithubAPIResult: Codable {
    let userUrl: String
    let issueUrl: String

    enum CodingKeys: String, CodingKey {
        case userUrl = "user_url"
        case issueUrl = "issues_url"
    }
}

let request = URLRequest(url: URL(string: "https://api.github.com")!)
let apiResult: Observable<GithubAPIResult> = URLSession.shared
    .rx.data(request: request)
    .map(Data.jsonToModelHandler)
apiResult.subscribe(onNext: { (result) in
    print(result)
}).disposed(by: kDisposeBag)