Ich versuche, die folgende Struktur von einem Spieler zu einem anderen zu senden:Game Center - Senden und Empfangen von Daten mit Swift
struct GamePacket {
var action: String
var pointArray: [CGPoint]
}
Ich bin eine harte Zeit, die richtige Art und Weise herauszufinden, die GamePacket
zu konvertieren Data
und wieder zurück.
Hier ist der Code ich für Senden Pakete bisher haben:
func send(packet: GamePacket) {
//convert GamePacket to Data here
let data = Data.init()
var remotePlayerArray = [GKPlayer]()
if let currentPlayer = self.currentPlayer, let match = self.match, let playerArray = self.match?.players {
for player in playerArray {
if player != currentPlayer {
remotePlayerArray.append(player)
}
}
do {
try match.send(data, to: remotePlayerArray, dataMode: GKMatchSendDataMode.reliable)
}
catch {
print("connectionError")
}
}
}
Und der Code für Empfang:
func match(_ match: GKMatch, didReceive data: Data, fromRemotePlayer player: GKPlayer) {
//convert Data to GamePacket here
}
Von einigen Proben in ObjectiveC
geschrieben, habe ich es geschafft wandeln Sie das GamePacket
zu Data
um, indem Sie etwas verwenden, das dem folgenden ähnlich ist:
let data = NSData(bytes: &packet, length: MemoryLayout<GamePacket>.size) as Data
aber ich kann nicht herausfinden, wie die Data
wieder auf dem empfangenden Ende zu einem GamePacket
zu konvertieren, noch bin ich sicher, dass dies der richtige Weg, es zu tun.
Jede Hilfe wird sehr geschätzt. Vielen Dank.