作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我需要使用 sendDataToAllPeers:withDataMode:error:
通过 GameKit 传输一个整数,但我不知道如何将我的 NSNumber 转换为 NSData 以便发送。我目前有:
NSNumber *indexNum = [NSNumber numberWithInt:index];
[gkSession sendDataToAllPeers:indexNum withDataMode:GKSendDataReliable error:nil];
但显然 indexNum 需要先转换为 NSData 才能发送。请问有人知道怎么做吗?
谢谢!
最佳答案
我不会推荐 NSKeyedArchiver
来完成这样一个简单的任务,因为它在它和类版本控制之上增加了 PLIST 开销。
包装:
NSUInteger index = <some number>;
NSData *payload = [NSData dataWithBytes:&index length:sizeof(index)];
发送:
[session sendDataToAllPeers:payload withDataMode:GKSendDataReliable error:nil];
解压(在 GKSession 接收处理程序中):
NSUInteger index;
[payload getBytes:&index length:sizeof(index)];
var i = 123
let data = NSData(bytes: &i, length: sizeof(i.dynamicType))
var i2 = 0
data.getBytes(&i2, length: sizeof(i2.dynamicType))
print(i2) // "123"
关于iphone - 如何将 NSNumber 转换为 NSData?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4689689/
我是一名优秀的程序员,十分优秀!