Transformers 是一个框架,旨在利用 Swift 编程语言的力量,优雅地转换事物。
注意:支持 Swift 版本:4.1 或更高版本
Codable
协议的 Swift 模型。Codable
协议的 Swift 模型数组。下载项目,并将 Core
文件夹拖拽到你的项目中。
添加到 Cartfile
github "webfrogs/Transformers" ~> 1.0
dependencies: [
.package(url: "https://github.com/webfrogs/Transformers.git", .upToNextMinor(from: "1.0.0")),
]
在 iOS 编程中最常见的场景是处理 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。Transformers 可以轻松地与 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)