CBORSwift
紧凑二进制对象表示(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 应该很漂亮或以某种方式突出。
- 为每个建议提交一个单独的拉取请求。
- 欢迎提出新类别,或改进现有分类。
- 保持描述简洁明了,但具有描述性。
- 描述以大写字母开头,以句号或句号结尾。
- 检查您的拼写和语法。
- 确保您的文本编辑器设置为删除尾随空格。
感谢您的建议!
作者
- 哈桑·沙巴齐 - Hassaniiii
许可协议
本项目采用MIT许可协议 - 详细信息请参见 LICENSE.md 文件。