CBORSwift 1.2.0

CBORSwift 1.2.0

Hassan Shahbazi 维护。



CBORSwift 1.2.0

CBORSwift

build status cocoapods compatible Licence

紧凑二进制对象表示(CBOR)是一种数据格式,其设计目标包括极小的代码大小、相当小的消息大小,以及无需协商版本的扩展性。

CBORSwift 实现了 CBOR,这对 iOS 和 macOS 项目的构建都很有用

入门

以下说明将帮助您在几行之内将 CBORSwift 添加到当前的 Xcode 项目中。

请注意,目前仅支持主要 7 版本进行简单值(True,False)的使用。其他主要版本也已完成。

安装

Cocoapods

要将 CBORSwift 导入当前项目,最简单的方法是使用 Cocoapods。只需将以下内容添加到您的 Podfile

pod 'CBORSwift'

手册

您也可以手动下载全部代码,并根据需要将以下类复制到您的项目中

CBOR.swift
Decoder.swift
Encoder.swift
Extensions.swift
MajorTypes.swift

使用

使用 CBORSwift 尽可能简单。您需要调用 2 个函数来进行 编码解码。最重要的要点是,您必须使用 NSObject 实例及其子类作为编码和解码参数。 您可以在 编码器解码器 单元测试中找到更多有用的用例。在 通用 单元测试中有一个完整的 CBOR 示例。

所有测试均使用 CBOR 官方工具 进行验证

对于所有 编码解码 情况,您都可以使用 encode-decode 作为函数,或作为扩展

var encoded = CBOR.encode(NSOBJECT_ITEM)
var decoded = CBOR.decode(NSOBJECT_ITEM)

var encoded = NSOBJECT_ITEM.encode()
var decoded = NSOBJECT_ITEM.decode()

数字(正数、负数)- 主要 0 和 1

只需创建一个 NSNumber 实例并将其传递给 encode-decode 函数。或者,您可以直接从实例调用 encode-decode

var encoded = CBOR.encode(NSNumber(value: 30))
var encoded = NSNumber(value: 3428).encode()

var encoded = CBOR.encode(NSNumber(value: -15))
var encoded = NSNumber(value: -42949295).encode()

var decoded = CBOR.decode([0x0A])
var decoded = [0x0A].decode()

var decoded = CBOR.decode([0x39, 0x01, 0x00])
var decoded = [0x39, 0x01, 0x00].decode()

字节字符串 - 主要 2

您需要创建一个 NSByteString 类的实例,并开始使用它

var str = NSByteString("2525")

var encoded = CBOR.encode(str)
var encoded = str.encode()

var decoded = CBOR.decode([0x42, 0x25, 0x25])
var decoded = [0x42, 0x25, 0x25].decode()

文本字符串 - 主要 3

创建一个 NSString 实例即可

var encoded = CBOR.encode("hello" as NSString)
var encoded = ("hello" as NSString).encode()

var decoded = CBOR.decode([0x65, 0x68, 0x65, 0x6C, 0x6C, 0x6F])
var decoded = [0x65, 0x68, 0x65, 0x6C, 0x6C, 0x6F].decode()

数组 - 主要 4

创建一个 NSArray 实例

var encoded = CBOR.encode([10] as NSArray)
var encoded = ([10, 15, -9] as NSArray).encode()

var decoded = CBOR.decode([0x81, 0x0A])
var decoded = [0x81, 0x0A].decode()

自定义字典 - 主要 5

在 Apple 编程系统中,Map 实际上与 NSDictionary 相同

var encoded = CBOR.encode(["sure":"shahbazi", "name":"hassan"] as NSDictionary)
var encoded = (["sure":"shahbazi", "name":"hassan"] as NSDictionary).encode()

var decoded = CBOR.decode([0xA1, 0x65, 0x68, 0x65, 0x6C, 0x6C, 0x6F, 0x65, 0x77, 0x6F, 0x72, 0x6C, 0x64])
var decoded = [0xA1, 0x65, 0x68, 0x65, 0x6C, 0x6C, 0x6F, 0x65, 0x77, 0x6F, 0x72, 0x6C, 0x64].decode()

标记值 - 主要 6

如果您想对标记值进行编码和解码,可以轻松完成。标记值的类型在 NSTag 类型中。

var encoded = CBOR.encode(NSTag(tag: 5, NSNumber(value: 10))
var encoded =  NSTag(tag: 5, NSNumber(value: 10)).encode()

var decoded = CBOR.decode([0xC5, 0x0A])
var decoded = [0xC5, 0x0A].decode()

布尔值 - 主要 7

布尔值被称为 简单值,并标记为 major7

var encoded = CBOR.encode(NSSimpleValue(false))
var encoded = CBOR.encode(NSSimpleValue(true))

var decoded = CBOR.decode([0xF4])
var decoded = CBOR.decode([0xF5])

贡献

请确保您的拉取请求符合以下指南

  • 对条目进行字母排序。
  • 在提出新建议之前,请搜索以前的建议,因为您的建议可能是一个重复项。
  • 建议的 README 应该很漂亮或以某种方式突出。
  • 为每个建议提交一个单独的拉取请求。
  • 欢迎提出新类别,或改进现有分类。
  • 保持描述简洁明了,但具有描述性。
  • 描述以大写字母开头,以句号或句号结尾。
  • 检查您的拼写和语法。
  • 确保您的文本编辑器设置为删除尾随空格。

感谢您的建议!

作者

许可协议

本项目采用MIT许可协议 - 详细信息请参见 LICENSE.md 文件。