目录
目录README.md

VDCodable

CI Status Version License Platform

Description

This repository includes some useful tools for Codable protocol and data decoding.

Usage

  1. JSON

JSON enum makes it easy to deal with JSON data. Use String, Int subscripts and dynamic member lookup (“dot” syntax) to retrieve a value:

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

JSON enum uses purely Swift JSON serialization based on Swift Protobuf implementation, which is extremely fast. Confirms to Codable.

  1. VDJSONDecoder

An object that decodes instances of a data type from JSON objects. Main differences from Foundation JSONDecoder:

  • Decoding non-string types from quoted values (like “true”, “0.0”)
  • Custom JSON parsing via (([CodingKey], JSON) -> JSON) closure
  • Purely Swift and faster
  1. VDJSONEncoder

Purely Swift version of JSONEncoder.

  1. URLQueryEncoder and URLQueryDecoder

Encoder and decoder for query strings.

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. DictionaryDecoder and DictionaryEncoder

  2. NSManagedDecodable, NSManagedEncodable and NSManagedCodable protocols

Protocols that make your NSManagedObject subclasses confirm to Codable protocol.

  1. PlainCodingKey

Simple CodingKey struct.

  1. Type reflection for Decodable types
let properties: [String: Any.Type] = Mirror.reflect(SomeType.self)
//or Mirror(SomeType.self).children
  1. Tools for creating custom encoders/decoders

Based on similar logic when writing different encoders/decoders DecodingUnboxer and EncodingBoxer protocols were implemented. Examples of usage are all encoders in decoders in this repo.

Installation

  1. CocoaPods

Add the following line to your Podfile:

pod 'VDCodable'

and run pod update from the podfile directory first.

  1. Swift Package Manager

Create a Package.swift file.

// swift-tools-version:5.0
import PackageDescription

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

Author

Voidilov, voidilov@gmail.com

License

VDCodable is available under the MIT license. See the LICENSE file for more info.

关于
418.0 KB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

©Copyright 2023 CCF 开源发展委员会
Powered by Trustie& IntelliDE 京ICP备13000930号