0

整数変数「ポイント」を NSData に格納したターンベースのゲームを作成しています。これはその後、gamecenter によって格納されます。これまでのところ、次のようにしています。

NSString *newString=[[NSString alloc] initWithFormat: @"%i", points];

NSData *data = [newString dataUsingEncoding:NSUTF8StringEncoding];

より多くの変数を NSData *data に格納する必要があります。これどうやってするの?

次の方法で、文字列 *newString に 2 つの整数を格納できることがわかりました。

NSString *newString=[[NSString alloc] initWithFormat: @"%i, %i", points, otherInteger];

ただし、文字列は最後に続く1つの整数値として格納されるため、これをデコードする方法がわかりません。とにかく最適な実装ではない可能性があるため、提案をいただければ幸いです。

4

1 に答える 1

1

あなたはこのようなことをすることができます:

// for encoding
int32_t points = ...;
int32_t otherInteger = ...;
NSMutableData *data = [NSMutableData data];
[data appendBytes:&points length:sizeof(int32_t)];
[data appendBytes:&otherInteger length:sizeof(int32_t)];
.
.
.

// for decoding
NSData *data = ...;
int32_t points;
int32_t otherInteger;
int index = 0;
NSRange range;

range = NSMakeRange(index, sizeof(int32_t));
[data getBytes:&points range:range];
index += sizeof(int32_t);

range = NSMakeRange(index, sizeof(int32_t));
[data getBytes:&otherInteger range:range];
index += sizeof(int32_t);

.
.
.
于 2012-12-01T23:30:00.023 に答える