VDCodable

CI Status Version License Platform

描述

此仓库包含一些用于 Codable 协议和数据解码的实用工具。

用法

  1. JSON

JSON 枚举使处理 JSON 数据变得容易。使用 StringInt 下标和动态成员查找(“点”语法)来检索值。

if let name = json.root.array[0]?.name.string {...}
//or if let name = json["root"]["array"][0]["name"]?.string {...}

JSON 枚举使用纯 Swift JSON 序列化,基于 Swift Protobuf 实现,速度极快。符合 Codable 协议。

  1. VDJSONDecoder

一个将 JSON 对象解码为数据类型实例的对象。与 Foundation JSONDecoder 的主要区别:

  1. VDJSONEncoder

JSONEncoder 的纯 Swift 版本。

  1. URLQueryEncoderURLQueryDecoder

用于查询字符串的编码器和解码器。

struct SomeStruct: Codable {
  var title = "Query_string"
  let number = 0
}
let baseURL = URL(string: "https://base.url")!
let value = SomeStruct() 
let url = try? URLQueryEncoder().encode(value, for: baseURL)
//url = "https://base.url?title=Query_string&number=0"
  1. DictionaryDecoderDictionaryEncoder

  2. NSManagedDecodableNSManagedEncodableNSManagedCodable 协议

使您的 NSManagedObject 子类符合 Codable 协议的协议。

  1. PlainCodingKey

简单的 CodingKey 结构体。

  1. 用于 Decodable 类型的类型反射
let properties: [String: Any.Type] = Mirror.reflect(SomeType.self)
//or Mirror(SomeType.self).children
  1. 用于创建自定义编码器/解码器的工具

基于编写不同编码器/解码器时的类似逻辑,实现了 DecodingUnboxerEncodingBoxer 协议。此仓库中的所有编码器和解码器都是用法示例。

安装

  1. CocoaPods

将以下行添加到您的 Podfile

pod 'VDCodable'

并首先从 podfile 目录运行 pod update

  1. Swift Package Manager

创建一个 Package.swift 文件。

// swift-tools-version:5.0
import PackageDescription

let package = Package(
  name: "SomeProject",
  dependencies: [
    .package(url: "https://github.com/dankinsoid/VDCodable.git", from: "2.13.0")
    ],
  targets: [
    .target(name: "SomeProject", dependencies: ["VDCodable"])
    ]
)
$ swift build

作者

Voidilov, voidilov@gmail.com

许可

VDCodable 在 MIT 许可证下可用。有关更多信息,请参见 LICENSE 文件。