jow*_*wie 18 iphone objective-c nsdata gamekit ios
我需要通过GameKit传输一个整数,sendDataToAllPeers:withDataMode:error:但我不知道如何将我的NSNumber转换为NSData以便发送.我目前有:
NSNumber *indexNum = [NSNumber numberWithInt:index];
[gkSession sendDataToAllPeers:indexNum withDataMode:GKSendDataReliable error:nil];
Run Code Online (Sandbox Code Playgroud)
但很明显,在我发送之前,indexNum需要转换为NSData.有人知道怎么做吗?
谢谢!
Eri*_*ner 34
我不推荐NSKeyedArchiver这么简单的任务,因为它在它和类版本控制之上增加了PLIST开销.
包:
NSUInteger index = <some number>;
NSData *payload = [NSData dataWithBytes:&index length:sizeof(index)];
Run Code Online (Sandbox Code Playgroud)
发送:
[session sendDataToAllPeers:payload withDataMode:GKSendDataReliable error:nil];
Run Code Online (Sandbox Code Playgroud)
解包(在GKSession接收处理程序中):
NSUInteger index;
[payload getBytes:&index length:sizeof(index)];
Run Code Online (Sandbox Code Playgroud)
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"
Run Code Online (Sandbox Code Playgroud)
Ole*_*ann 19
存储它:
NSData *numberAsData = [NSKeyedArchiver archivedDataWithRootObject:indexNum];
Run Code Online (Sandbox Code Playgroud)
要将其转换回NSNumber:
NSNumber *indexNum = [NSKeyedUnarchiver unarchiveObjectWithData:numberAsData];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17415 次 |
| 最近记录: |