CBORCoding
CBORCoding 是一个轻量级的框架,包含一组用于将符合 Codable
协议的类型编码和解码成 CBOR 文档格式的编码器和解码器,适用于 iOS、macOS、tvOS 和 watchOS。
安装
CBORCoding 可通过 CocoaPods、Carthage 和 Swift 包管理器 获得。
要使用 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
进行其键容器的编码/解码,因此该框架支持的键类型仅限于Int
和String
。 - CBOR支持十进制分数和大浮点数,其中尾数是Bignum。在当前实现中,这限于内容适合于
Int64
或UInt64
类型的Bignum。
有关CBOR格式的更多信息,请参阅:CBOR & RFC 8949。
贡献
无论您是提交功能请求、报告错误还是编写自己的代码,所有对该库的贡献都受欢迎!有关如何贡献的更多信息,请参阅CONTRIBUTING.md。
作者
乔·牛顿,[email protected]
致谢
CBORCoding主要基于Swift提供的JSONEncoder
/JSONDecoder
类。有关详情,请参阅ATTRIBUTIONS
。
许可证
CBORCoding可在MIT许可证下获得。有关更多信息,请参阅LICENSE
文件。