如何将GKPlayer的数据发送到另一个比赛?

我想从一个GKPlayer NSData发送到另一个比赛。 因此, sendDataToAllPlayers(_:withDataMode:error:)将是最理想的。

 func sendDataToAllPlayers(data: Int, withDataMode Reliable: GKMatchSendDataMode, error: NSErrorPointer) -> Bool { return true } 

但是,如何使用上面的方法发送一个Intvariables?

 var score:Int = 0 

这个用于将Int (或其他types)封装到NSData或从NSData提取它的版本应该在具有不同字节顺序的设备之间工作:

 // at sender before sending data let data = NSMutableData() let archiver = NSKeyedArchiver(forWritingWithMutableData: data) archiver.encodeInteger(score, forKey: "score") archiver.finishEncoding() // at receiver after receiving data let unarchiver = NSKeyedUnarchiver(forReadingWithData: data) let score = unarchiver.decodeIntegerForKey("score") unarchiver.finishDecoding() 
 extension Int { var data: NSData { var source = self return NSData(bytes: &source, length: sizeof(Int)) } } extension Double { var data: NSData { var source = self return NSData(bytes: &source, length: sizeof(Double)) } } extension NSData { var integerValue:Int { var result = 0 getBytes(&result, length: sizeof(Int)) return result } var doubleValue:Double { var result:Double = 0 getBytes(&result, length: sizeof(Double)) return result } } let myIntegerData = 123.data // _NSInlineData let backToInt = myIntegerData.integerValue // 123 let myDoubleData = 123.456789.data // _NSInlineData let backToDouble = myDoubleData.doubleValue // 123.456789