У меня есть список переменных: [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 и привязки следующим образом:
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)
Я не могу понять, что я делаю неправильно.Я весь день искал ответы в Интернете, но не могу их найти.Может кто-нибудь объяснить мне правильный способ отправки массива через многопользовательскую сессию?