CBORCoding 1.4.0

CBORCoding 1.4.0

Joseph Newton 维护。



  • Joe Newton

CBORCoding

Codacy Badge License MIT CocoaPods Compatible Carthage Compatible Platform Code Coverage

Carthage Cocoapods Documentation Swift Package SwiftLint XCFramework Xcode Project

CBORCoding 是一个轻量级的框架,包含一组用于将符合 Codable 协议的类型编码和解码成 CBOR 文档格式的编码器和解码器,适用于 iOS、macOS、tvOS 和 watchOS。

安装

CBORCoding 可通过 CocoaPodsCarthageSwift 包管理器 获得。

要使用 CocoaPods 安装,请简单地将其添加到您的 Podfile 中

pod 'CBORCoding'

要使用 Carthage 安装,请简单地将其添加到您的 Cartfile 中

github "SomeRandomiOSDev/CBORCoding"

要使用 Swift 包管理器安装,请将其添加到您的 Package.swift 文件的 dependencies

.package(url: "https://github.com/SomeRandomiOSDev/CBORCoding.git", from: "1.0.0")

用法

首先在 Swift 文件顶部导入 CBORCoding

import CBORCoding

导入后,使用方法几乎与 Swift Foundation 库中提供的 JSONEncoder/JSONDecoder 类对非常相似。此示例演示如何将简单 Car 类型的实例编码为 CBOR 对象

struct Car: Codable {
    var manufacturer: String
    var model: String
    var horsePower: Int
    var description: String?
}

let stinger = Car(manufacturer: "Kia", model: "Stinger GT2", horsePower: 365, description: nil)  
let encoder = CBOREncoder()

let encodedData = try encoder.encode(stinger)
print("CBOR: \(hexString(encodedData))")

/* Prints:
 CBOR: 0xA36C6D616E756661637475726572634B6961656D6F64656C6B5374696E676572204754326A686F727365506F77657219016D
*/

此示例演示如何稍后解码该编码的 Car

let decoder = CBORDecoder()
let stinger = try decoder.decode(Car.self, from: encodedData)

CBOR

紧凑二进制对象表示(Concise Binary Object Representation,CBOR)是一种用于以尽可能小的消息大小编码格式化数据的数据格式。

虽然该框架尽可能地实现了该规范的所有内容,但仍有一些显著的例外

  • CBOR支持任何定义的类型键,但是由于Codable依赖于CodingKey进行其键容器的编码/解码,因此该框架支持的键类型仅限于IntString
  • CBOR支持十进制分数和大浮点数,其中尾数是Bignum。在当前实现中,这限于内容适合于Int64UInt64类型的Bignum。

有关CBOR格式的更多信息,请参阅:CBOR & RFC 8949

贡献

无论您是提交功能请求、报告错误还是编写自己的代码,所有对该库的贡献都受欢迎!有关如何贡献的更多信息,请参阅CONTRIBUTING.md

作者

乔·牛顿,[email protected]

致谢

CBORCoding主要基于Swift提供的JSONEncoder/JSONDecoder类。有关详情,请参阅ATTRIBUTIONS

许可证

CBORCoding可在MIT许可证下获得。有关更多信息,请参阅LICENSE文件。