在Objective-C中,我使用以下代码
Int
变量转换为NSData
,即一个字节包。
int myScore = 0;
NSData *packet = [NSData dataWithBytes:&myScore length:sizeof(myScore)];
NSData
变量用于方法。
[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
}
但是,我无法将Int
变量转换为NSData
并将其用作方法。我怎样才能做到这一点?
使用Swift 3.x到5.0:
var myInt = 77
var myIntData = Data(bytes: &myInt,
count: MemoryLayout.size(ofValue: myInt))
要将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))
}
你可以这样转换:
var myScore: NSInteger = 0
let data = NSData(bytes: &myScore, length: sizeof(NSInteger))