ゲーム関連の情報を GKScore の uint64_t コンテキスト プロパティに保存して、新しい Game Center Challenges でより良いゲーム体験を作成しようとしています。しかし、私はそれを正しく理解していません。以下のような構造体を作成しました。
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];
ただし、値をログアウトすると、最初の 2 つの値 (gameMode と destroy) しか取得できないことがわかります。構造体にさらに変数を追加しても、最初の 2 つの変数のみをキャプチャします。
私は何を間違っていますか?これを行うよりスマートな方法はありますか?