DCMessagePack 1.0.31

DCMessagePack 1.0.31

langxxx 维护。



  • cxa

MessagePack for Swift

Swift 的 MessagePack 实现。

打包

protocol Packable {
    func packToBytes() -> Bytes
    func pack() -> Data
}

可打包的 stdlib 类型

  • Bool, Double, Int, UInt, Int64, UInt64
  • 包装类型 Optional,其中 Wrapped : Packable
  • 数组,其中 Element : Packable
  • 字典,其中 Key: Hashable,Key: Packable,Value: Packable

可打包扩展类型

  • 二进制
  • 扩展

如果您想要打包具有混合类型的数据,请使用 ValueBox

解包

struct Unpacker {
    static func unpack(bytes: Bytes) -> ValueBox?
}

从数据中解包,为 Unpacker.unpack(bytes:) 提供方便

extension Data {
    func unpack() -> ValueBox?
}

可解包的 stdlib 类型包含

  • Bool
  • Double
  • Float
  • Int
  • Int64
  • String
  • UInt
  • UInt64

对于其他混合类型,您始终可以使用 ValueBox

enum ValueBox {
    case array([ValueBox])
    case binary(Binary)
    case bool(Bool)
    case dictionary([ValueBox: ValueBox])
    case double(Double)
    case `extension`(Extension)
    case float(Float)
    case int64(Int64)
    case `nil`
    case string(String)
    case uint64(UInt64)
}