3
我试图从一个玩家发送以下结构到另一个发送和接收数据:游戏中心 - 斯威夫特与
struct GamePacket {
var action: String
var pointArray: [CGPoint]
}
我有一个很难搞清楚的GamePacket
转换为正确的方式Data
,然后再回来。
下面是代码我迄今发送包:
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")
}
}
}
和接收为代码:
func match(_ match: GKMatch, didReceive data: Data, fromRemotePlayer player: GKPlayer) {
//convert Data to GamePacket here
}
从写在ObjectiveC
一些样品,我设法转换GamePacket
到Data
使用的东西simmilar以下几点:
let data = NSData(bytes: &packet, length: MemoryLayout<GamePacket>.size) as Data
但是,我想不出如何将Data
转换回GamePacket
在接收端,我也没有肯定这是做了正确的道路。
任何帮助是极大apreciated。谢谢。