0

我正在制作一个回合制游戏,我将一个整数变量“points”存储到 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];

但是我不知道如何解码它,因为字符串将作为一个整数值存储在最后一个整数值之后。无论如何,它可能不是最好的实现,所以任何建议都将不胜感激。

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 回答