我正在尝试在 GKScore 的 uint64_t 上下文属性上存储一些游戏相关信息 - 以通过新的游戏中心挑战创造更好的游戏体验。但是,我没有做对。我构建了一个如下结构:
typedef struct{
unsigned int gameMode;
unsigned int destroyed;
unsigned int duration;
} GameInfo;
我尝试以下方法:
uint64_t myContext
GameInfo info;
info.gameMode = 2;
info.destroyed = 50;
info.duration = 100;
NSData *data = [NSData dataWithBytes:&info length:sizeof(info)];
[data getBytes:&myContext length:sizeof(myContext)];
将结构打包到 NSData,然后将字节写入 myContext。
然后,我尝试使用 64 位整数重新创建信息,如下所示:
NSData *newData = [NSData dataWithBytes:&myContext length:sizeof(myContext)];
GameInfo *result = (GameInfo*) [newData bytes];
但是,当我注销这些值时,我发现我只能捕获前两个值(gameMode 和destroy)。如果我向结构中添加更多变量,我仍然只捕获前 2 个变量。
我究竟做错了什么?有没有更聪明的方法来做到这一点?