2014-10-10 2 views
1

Game Center 게임을 만들고 있습니다.Swift에서 NSData의 struct를 추출하십시오.

var packet = MovePacket(packetID: 1, move: myMove) 

let dataPacket = NSData(bytes: &packet, length: sizeof(MovePacket)) 

currentMatch!.sendDataToAllPlayers(dataPacket, withDataMode: GKMatchSendDataMode.Reliable, error: nil) 

이 목표 - C처럼 작동하지만 내 struct MovePacket 다시 수신 NSData를 디코딩하는 방법을 이해하지 않습니다 :이 같은 struct MovePacket를 포함하는 데이터 패킷을 전송합니다. 당신이 의미 가정

func match(match: GKMatch!, didReceiveData data: NSData!, fromRemotePlayer player: GKPlayer!) { 

    var packet : MovePacket 

    data.getBytes(&packet, length: sizeof(MovePacket)) // getting error here: Address of variable 'packet' taken before it is initialized 

    println(packet) //Variable 'packet' used before being initialized 

} 
+0

당신은'VAR 패킷를 시도 : MovePacket()'를? –

+0

코드에 언급 된 날짜가 없습니다. ** "NSData **에서 다시 디코딩"이라고 말하고 싶습니까? –

+0

@robmayoff 나는 날짜가 아닌 데이터를 의미했습니다. 편집 해 주셔서 감사합니다. –

답변

4

는 "다시 NSData에서 그것을 디코딩": 이것은 내 시도 중 하나입니다

func match(match: GKMatch!, didReceiveData data: NSData!, fromRemotePlayer player: GKPlayer!) { 
    if data.length == sizeof(MovePacket) { 
     let packet = UnsafePointer<MovePacket>(data.bytes).memory 
     println(packet) 
    } else { 
     // error: data size is incorrect 
    } 
}