gab*_*ata 2 nscoding nsdata gamekit ios game-center
我是GKTurnBasedMatch的新手,我正在试图找出在转弯期间玩家之间发送的"matchData"的良好做法.我发现的所有教程主要包括发送一串文本,我想发送更多.如果有人能给我一个更高级的教程,那就太好了.
我想做的一个例子就是战斗.这两个玩家有他们的化身,他们有不同的细节(健康,攻击,防御等),我该如何发送这些数据?我认为可能的唯一方法是将所有匹配细节(很多)编成NSDictionary并发送,以便它们可以再次放回到自定义匹配对象中.我应该实施NSCoding吗?
谢谢!
我将实现一个类,它存储单个转弯所需的所有相关信息,并让类实现NSCoding.这意味着您可以在一个播放器的设备上将对象转换为NSData,然后将其转换回另一侧的对象.
这个网站http://samsoff.es/posts/archiving-objective-c-objects-with-nscoding有一个简单的例子让你前进,这里是你需要的主要方法的一个例子:
- (id)initWithCoder:(NSCoder *)decoder {
if (self = [super init]) {
self.health = [decoder decodeObjectForKey:@"health"];
self.attack = [decoder decodeObjectForKey:@"attack"];
isDead = [decoder decodeBoolForKey:@"isDead"];
}
return self;
}
- (void)encodeWithCoder:(NSCoder *)encoder {
[encoder encodeObject:self.health forKey:@"health"];
[encoder encodeObject:self.attack forKey:@"attack"];
[encoder encodeBool:isDead forKey:@"isDead"];
}
Run Code Online (Sandbox Code Playgroud)
将对象编码为NSData:
NSData *data = [NSKeyedArchiver archivedDataWithRootObject: object];
Run Code Online (Sandbox Code Playgroud)
转换回对象:
id *object = [NSKeyedUnarchiver unarchiveObjectWithData: inputData];
Run Code Online (Sandbox Code Playgroud)
档案和序列化编程指南也是一个很好的起点.
另一个选择是使用像RestKit这样的库,它的对象映射到/来自JSON或XML.
| 归档时间: |
|
| 查看次数: |
1473 次 |
| 最近记录: |