如何将Int转换成Swift中的NSData?

在Objective-C中,我使用下面的代码来

  1. 将一个Intvariables转换为一个字节的数据包NSData

     int myScore = 0; NSData *packet = [NSData dataWithBytes:&myScore length:sizeof(myScore)]; 
  2. 使用转换的NSDatavariables到一个方法。

     [match sendDataToAllPlayers: packet withDataMode: GKMatchSendDataUnreliable error: &error]; 

我试图将Objective-C代码转换成Swift:

 var myScore : Int = 0 func sendDataToAllPlayers(packet: Int!, withDataMode mode: GKMatchSendDataMode, error: NSErrorPointer) -> Bool { return true } 

但是,我不能将一个Intvariables转换成一个NSData并使用它的方法。 我怎样才能做到这一点?

Int转换为NSData

 var score: Int = 1000 let data = NSData(bytes: &score, length: sizeof(Int)) var error: NSError? if !match.sendDataToAllPlayers(data, withDataMode: .Unreliable, error: &error) { println("error sending data: \(error)") } 

将其转换回来:

 func match(match: GKMatch!, didReceiveData data: NSData!, fromPlayer playerID: String!) { var score: Int = 0 data.getBytes(&score, length: sizeof(Int)) } 

随着Swift 3.x和4.0:

 var myInt = 77 var myIntData = Data(bytes: &myInt, count: MemoryLayout.size(ofValue: myInt)) 

你可以这样转换:

 var myScore: NSInteger = 0 let data = NSData(bytes: &myScore, length: sizeof(NSInteger))