StickyEncoding 1.0.0-beta.5

StickyEncoding 1.0.0-beta.5

Tony Stone 维护。



StickyEncoding 1.0.0-beta.5

  • Tony Stone

⚡️关注更新:即将推出的 1.0.0 版本(目前处于beta版)⚡️

星标 此 GitHub 仓库,以便保持更新并表达您的支持。

StickyEncoding License: Apache 2.0

Platforms: iOS | macOS | watchOS | tvOS | Linux Swift 4.2 Version   travis-ci.org   Codecov

StickyEncoding 简化了将 Codable 实例编码和解码到二进制格式的过程,该格式可以存储在磁盘上或通过套接字发送。

文档

  • 用户指南与参考 - 丰富的用户指南和参考文档!100%文档化API,完整示例和大量隐藏细节。
  • 贡献指南 - 如果你想贡献并需要关于构建环境的说明,请访问此位置。

快速入门指南

使用BinaryEncoder实例进行编码,它将编码任何Encodable类型,无论你是声明遵守Encodable并让编译器创建代码,还是手动实现遵守协议。

使用BinaryDecoder实例进行解码,可以解码使用BinaryEncoder之前编码的任何Decodable类型。当然,你也可以通过使用Codable来声明EncodableDecodable协议。

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