CodableXPC

Build Status

这提供了一个 Encoder 和 Decoder 协议的实现,应该允许用户以 libxpc 为目标。 这仅在 macOS 上可用,因为 libxpc 在其他平台上不受支持。

用法

用法非常简单,您的类型应该符合 CodableDecodableEncodable,具体取决于您需要的语义。 然后,您应该使用提供的 XPCEncoder.encodeXPCDecoder.decode 静态函数,分别将数据封送和解封送到 native xpc_object_t 和从 native xpc_object_t 封送和解封。 下面提供了一个简短的最小示例。

struct TestStruct {
    let opinion = "XPC is awesome!"
}

let value = TestStruct()
let payload = try! XPCEncoder.encode(value)
let decoded = try! XPCDecoder.decode(payload)

assert(value == decoded)

但是,值得注意的是,此 API 不足以用 Swift 编写正确的 XPC 代码。 您需要提供正确的 xpc_main 并使用 SDK 提供的现有抽象来管理您的事务。 具体来说,此 API 不支持回复字典。

同样,此库仅旨在作为一种减少编写 Swift 类型封送代码的样板代码的方式,并且不能在没有 macOS SDK 提供的常用 libxpc API 的情况下使用。

依赖项和分发

此包仅使用 SwiftPM 分发。 据我所知,除了标准的 macOS SDK 之外,它没有任何依赖项,但是如果您发现任何依赖项,请告诉我。