首页 > 解决方案 > 如何在 Swift 中通过发送 multipeersession 发送 [Double] 数组?

问题描述

我有 var list: [Double] = [1.02, 0.97, ...] 并且我正在尝试将其发送给会话中的同伴。

我使用的是 Apple 提供的模板,因此他们已经设置了接收数据函数和 sendtoallpeers() 函数(如下):

func sendToAllPeers(_ data: Data) {
        do {
            try session.send(data, toPeers: session.connectedPeers, with: .reliable)
        } catch {
            print("error sending data to peers: \(error.localizedDescription)")
        }
    }

接收到的数据处理程序如下:

func receivedData(_ data: Data, from peer: MCPeerID) {

    do {

        if let worldMap = try NSKeyedUnarchiver.unarchivedObject(ofClass: ARWorldMap.self, from: data) {

        } else
            if let anchor = try NSKeyedUnarchiver.unarchivedObject(ofClass: ARAnchor.self, from: data) {


        } else if let list = try NSKeyedUnarchiver.unarchivedObject(ofClass: [Double].self, from: data) {




        }

最后一部分是它失败的地方,说“调用中的参数标签不正确(有'ofClass:from:',预期'ofClasses:from:')”

Apple 如何构建 worldMap 和 anchor 的发送函数如下:

let anchor = ARAnchor(name: "basicBoard", transform: hitTestResultForLater!.worldTransform)
            guard let data = try? NSKeyedArchiver.archivedData(withRootObject: anchor, requiringSecureCoding: true)
                else { fatalError("can't encode anchor") }
            self.multipeerSession.sendToAllPeers(data)

我如何组织发送列表:

guard let data2 = try? NSKeyedArchiver.archivedData(withRootObject: list, requiringSecureCoding: true)
        else { fatalError("can't encode list") }
    self.multipeerSession.sendToAllPeers(data2)

我无法弄清楚我做错了什么。我整天在网上搜索答案,但找不到答案。有人可以向我解释通过 multipeersession 发送数组的正确方法吗?

标签: iosarraysswiftsend

解决方案


推荐阅读