iOS Game Center无法使用NSCoding发送匹配数据

时间:2014-07-28 21:05:21

标签: ios game-center

所以现在我正在努力在回合制游戏中发送比赛数据,我正在使用这篇文章作为参考。 Good practices for Game Center matchData

我创建了一个新类,它实现了NSCoding。它目前只为NSString保存一个变量。这是我发送匹配数据时的代码。

self.game.status = @"Test";

NSData *updatedMatchData = [NSKeyedArchiver archivedDataWithRootObject:self.game];

[self.currentMatch endTurnWithNextParticipants:[NSArray arrayWithObject:nextPerson]
                                     turnTimeout:1000
                                       matchData:updatedMatchData
                               completionHandler:^(NSError *error) {
                                 if (error) {
                                   NSLog(@"Error: %@", error);
                                 }
                               }];
  NSLog(@"Successfully ended turn");
}

当我尝试检索匹配数据时,我尝试了这个。

[match loadMatchDataWithCompletionHandler:^(NSData *matchData, NSError *error) {
    if (matchData)
    {
      RaceGame *updatedGame = [NSKeyedUnarchiver unarchiveObjectWithData:matchData];

      NSLog(@"Match Data: %@", updatedGame.status); //prints null
      callback(matchData); 
    }
  }];

但是,状态为空。我已经检查过那场比赛也不是空的。我也打印出了比赛,它说matchData.length = 135,但是我一直在改变它,它仍然是135,所以我不确定这是否有用。

关于地位为何没有改变的任何想法?

- 编辑 -

的.m

@implementation RaceGame

@synthesize status;

#pragma mark - NSCoding protocol

- (void)encodeWithCoder:(NSCoder *)aCoder
{
   [aCoder encodeObject:status forKey:@"status"];

}

- (id)initWithCoder:(NSCoder *)aDecoder
{
  if (self = [super init]) {
    self.status = [aDecoder decodeObjectForKey:@"status"];
  }
  return self;
}

@end

·H

@interface RaceGame : NSObject <NSCoding> {
  NSString *status;
}

/* Match Data */
@property (nonatomic, copy) NSString *status;

@end

1 个答案:

答案 0 :(得分:0)

没关系,我真是个愚蠢的错误。我在两台设备上测试它,我只在其中一台设备上运行更新版本。