gpt4 book ai didi

swift - 检测编码数据对象中的基础类型

转载 作者:行者123 更新时间:2023-11-28 13:28:52 25 4
gpt4 key购买 nike

我在设备之间发送数据,这是我创建的符合 Codable 的 JSON 编码自定义类。

let encoder = JSONEncoder()
do {
let data = try encoder.encode(assets)
try appDelegate.mpcManager.session.send(data, toPeers: appDelegate.mpcManager.connectedPeers, with: MCSessionSendDataMode.reliable)
} catch {
print("sendAssets Error: \(error)")
}

当执行接收设备的 MCSession didRecieve 委托(delegate)方法时,我如何检测发送到函数的数据对象内部/后面的解码类型?

session(_ session: MCSession, didReceive data: Data, fromPeer peerID: MCPeerID)

data 实例没有其他线程提供的“.dynamictype”属性来检测类型。

也许我的应用程序架构不正确,但我正在尝试使用 MultipeerConnectivity 进行不同的尝试,并认为我可以发送任何类型的自定义 Codable 数据类型,并且之后会有一种方法来处理解码和条件测试。

最佳答案

JSON 不编码类型。它只是编码数据。由您决定如何将该数据映射到系统中的类型。如果您需要告诉对方类型是什么,则需要在 JSON 中对其进行编码。

如果您只使用 Cocoa 设备 (iOS/macOS),您可能希望使用 NSSecureCodingNSKeyedArchiver 而不是 JSON。这种格式确实发送类型信息,并且设计用于在程序之间发送完整的对象(而不仅仅是数据)。有关示例项目,请参阅 https://www.objc.io/issues/8-quadcopter/the-quadcopter-client-app/ .

关于swift - 检测编码数据对象中的基础类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57828340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com