Dans Objective-C, j'utilise le code suivant pour
Convertissez une variable Int
en NSData
, un paquet d'octets.
int myScore = 0;
NSData *packet = [NSData dataWithBytes:&myScore length:sizeof(myScore)];
Utilisez la variable NSData
convertie dans une méthode.
[match sendDataToAllPlayers:
packet withDataMode: GKMatchSendDataUnreliable
error: &error];
J'ai essayé de convertir le code Objective-C en Swift:
var myScore : Int = 0
func sendDataToAllPlayers(packet: Int!,
withDataMode mode: GKMatchSendDataMode,
error: NSErrorPointer) -> Bool {
return true
}
Cependant, je ne suis pas en mesure de convertir une variable Int
en NSData
et de l'utiliser comme méthode. Comment puis je faire ça?
Avec Swift 3.x à 5.0:
var myInt = 77
var myIntData = Data(bytes: &myInt,
count: MemoryLayout.size(ofValue: myInt))
Pour convertir Int
en 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)")
}
Pour le reconvertir:
func match(match: GKMatch!, didReceiveData data: NSData!, fromPlayer playerID: String!) {
var score: Int = 0
data.getBytes(&score, length: sizeof(Int))
}
Vous pouvez convertir de cette manière:
var myScore: NSInteger = 0
let data = NSData(bytes: &myScore, length: sizeof(NSInteger))