Swift 中的 PackStream 实现

PackStream 是一种二进制消息格式,非常类似于 MessagePack。它可以独立使用,但它被构建为 Bolt 协议中使用的一种消息格式,用于在 Neo4j 服务器及其客户端之间进行通信。

此实现是用 Swift 编写的,主要作为 Swift Bolt 实现的依赖项。该实现反过来将为 TheoNeo4j Swift 驱动程序)提供 Bolt 支持。

用法

通过 PackStream,你可以编码 Bool、Int、Float(Swift 术语中的 Double)、String、List、Map 和 Structure。它们都实现了 PackProtocol,所以如果你想拥有一个可打包项的集合,你可以将它们指定为实现 PackProtocol。

示例

首先,记住要

import PackStream

然后你可以使用它,例如这样

let map = Map(dictionary: [
    "alpha": 42,
    "beta": 39.3,
    "gamma": "",
    "delta": List(items: [1,2,3,4])
    ])
let result = try map.pack()
let restored = try Map.unpack(result)

数字 1 到 40 的列表

let items = Array(Int8(1)...Int8(40))
let value = List(items: items)

被编码成以下字节

D4:28:01:02:03:04:05:06:07:08:09:0A:0B:0C:0D:0E:0F:10:11:12:13:14:15:16:17:18:19:1A:1B:1C:1D:1E:1F:20:22:23:24:25:26:27:28

入门指南

要直接与 Xcode 一起使用,输入 "swift package generate-xcodeproj"

Swift Package Manager

将以下内容添加到 Package.swift 中的 dependencies 数组中

.Package(url: "https://github.com/niklassaers/PackStream-swift.git",
 majorVersion: 0),

现在你可以执行以下操作

swift build

CocoaPods

pod "PackStream"

添加到您的 Podfile,现在您可以执行

pod install

以通过 CocoaPods 将 PackStream 包含在您的 Xcode 项目中

Carthage

github "niklassaers/PackStream-swift"

放入您的 Cartfile。如果这是你的整个 Cartfile,请执行

carthage bootstrap

如果你已经这样做了,请执行

carthage update

代替。

然后执行

cd Carthage/Checkouts/PackStream-swift
swift package generate-xcodeproj
cd -

Carthage 现在已设置好。 你现在可以执行

carthage build

您应该在 Carthage/Build 中找到 macOS、iOS、tvOS 和 watchOS 的构建

协议文档

作为参考,请参阅 Boltkit 中的 driver.py