⚡️ 关注更新:即将推出的 1.0.0 版本(目前处于beta版)⚡️
请 星标 此 GitHub 仓库,以便保持更新并表达您的支持。
StickyEncoding 简化了将 Codable
实例编码和解码到二进制格式的过程,该格式可以存储在磁盘上或通过套接字发送。
文档
快速入门指南
使用BinaryEncoder
实例进行编码,它将编码任何Encodable
类型,无论你是声明遵守Encodable
并让编译器创建代码,还是手动实现遵守协议。
使用BinaryDecoder
实例进行解码,可以解码使用BinaryEncoder
之前编码的任何Decodable
类型。当然,你也可以通过使用Codable
来声明Encodable
或Decodable
协议。
StickyEncoding创建了一个紧凑的二进制格式,用于表示已编码的对象或数据类型。你可以在文档二进制格式中了解更多关于该格式的内容。
为了方便许多用途,StickyEncoding将数据编码到EncodedData
实例中。EncodedData包含一个二进制格式,适合直接写入内存、磁盘或字节数组。或者在解码的情况下,该格式有助于快速解码到Swift实例。
编码
创建BinaryEncoder实例
let encoder = BinaryEncoder()
注意:你可以可选地传递自己的userInfo结构
BinaryEncoder(userInfo:)
,编码过程中你将可以使用它。
你可以编码任何顶级单值类型,包括Int、UInt、Double、Bool和字符串。只需将值传递给BinaryEncoder的实例,并调用encode
。
let string = "You can encode single values of any type."
let bytes = try encoder.encode(string)
基本的结构和类也可以被编码。
struct Employee: Codable {
let first: String
let last: String
let employeeNumber: Int
}
let employee = Employee(first: "John", last: "Doe", employeeNumber: 2345643)
let bytes = try encoder.encode(employee)
以及具有子类的复杂类型。
解码
创建BinaryDecoder实例
let decoder = BinaryDecoder()
注意:你可以可选地传递自己的userInfo结构
BinaryDecoder(userInfo:)
,解码过程中你将可以使用它。
要解码,你需要传递要创建的对象的类型,以及代表该类型的编码数据的一个实例。
let employee = try decoder.decode(Employee.self, from: bytes)
编码数据
BinaryEncoder.encode
方法返回类型为 Array<UInt8>
(同样,BinaryDecoder.decode
接受一个 Array<UInt8>
实例)。
[Array<UInt8>
可以轻松转换为其他类型,如 Swift.Data
,以便传递给 Foundation 方法以从文件中存储和加载数据。
let bytes = try encoder.encode(employee)
// Write the bytes directly to a file.
FileManager.default.createFile(atPath: "employee.bin", contents: Data(bytes))
源代码和二进制文件
您可以在 GitHub 上找到最新的源代码和二进制文件。
沟通和贡献
- 如果您 发现了一个错误,并且 能够提供可靠复现它的步骤,请 打开一个问题。
- 如果您 有一个功能请求,请 打开一个问题。
- 如果您 想要贡献力量
- 把它分叉出来! StickyEncoding 仓库
- 创建你的功能分支:
git checkout -b my-new-feature
- 提交你的更改:
git commit -am '添加某个特性'
- 推送到分支:
git push origin my-new-feature
- 提交拉取请求:-)
注意:有关如何构建和测试 StickyEncoding 以供贡献的说明,请参阅 贡献指南。
安装
Swift 包管理器
StickyEncoding 支持在 Darwin 和 Linux 上通过 Swift 包管理器进行依赖管理。
有关更多信息,请参阅 Swift 包管理器。
CocoaPods
StickyEncoding 通过 CocoaPods 提供。要安装它,只需将以下行添加到 Podfile 中
pod "StickyEncoding"
最低要求
构建环境
平台 | Swift | Swift 构建 | Xcode |
---|---|---|---|
Linux | 4.2 | ✔ | ✘ |
OSX | 4.2 | ✔ | Xcode 10.2 |
最低运行版本
iOS | OS X | tvOS | watchOS | Linux |
---|---|---|---|---|
8.0 | 10.10 | 9.0 | 2.0 | Ubuntu 14.04, 16.04, 16.10 |
注意
要在 Linux 上构建和运行,我们有一个预先配置的 Vagrant 文件,位于 https://github.com/tonystone/vagrant-swift
有关说明,请参阅 README。
作者
Tony Stone (https://github.com/tonystone)
许可证
StickyEncoding 在下发布行,Apache License, Version 2.0