游戏中心matchData良好做法(Good practices for Game Center m

2019-06-27 07:31发布

我是新来GKTurnBasedMatch,我试图找出哪些是对“matchData”转弯过程中玩家之间发送的良好做法。 所有的教程,我发现主要包括发送文本字符串,我想送了很多不止于此。 这将是巨大的,如果有人可以品脱我到一个更高级教程。

我想去做的例子是一场战斗。 这两名球员有自己的化身,他们有不同的细节(健康,攻击,防御等),我应该怎么送这个数据? 我看到的唯一可行的办法就是编纂所有比赛细节(他们中的很多)到一个NSDictionary和发送,使他们可以再次放回定义匹配对象。 我应该实现NSCoding?

谢谢!

Answer 1:

我会实现存储需要一个把所有的相关信息,一类和有类实现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"];
 }

编码您的对象NSData的:

NSData *data = [NSKeyedArchiver archivedDataWithRootObject: object];

转换回对象:

id *object = [NSKeyedUnarchiver unarchiveObjectWithData: inputData];

档案和序列化编程指南也是一个很好的起点。

另一种选择是使用像RestKit库和它的从JSON或XML对象映射到/。



文章来源: Good practices for Game Center matchData