【问题标题】:Int Showing as Long Odd ValueInt 显示为长奇数值
【发布时间】:2011-01-15 18:14:48
【问题描述】:

我正在尝试在我的 iPhone 游戏中为游戏中心多人游戏发送一个 int。

整数即将出现并显示为奇数长整数值,而不是预期的值。

我的 .h 中有这个:

typedef enum
{
 kPacketTypeScore,
} EPacketTypes;

typedef struct
{
 EPacketTypes type;
 size_t size;
} SPacketInfo;

typedef struct
{
 SPacketInfo packetInfo;

 int score;
} SScorePacket;

然后.m:

发送数据:

scoreData *score = [scoreData sharedData];

  SScorePacket packet;
  packet.packetInfo.type = kPacketTypeScore;
  packet.packetInfo.size = sizeof(SScorePacket);
  packet.score = score.score;

  NSData* dataToSend = [NSData dataWithBytes:&packet length:packet.packetInfo.size];
  NSError *error;
  [self.myMatch sendDataToAllPlayers: dataToSend withDataMode: GKMatchSendDataUnreliable error:&error];
  if (error != nil)
  {
   // handle the error
  }

接收:

SPacketInfo* packet = (SPacketInfo*)[data bytes];

 switch (packet->type)
 {
  case kPacketTypeScore:
  {
   SScorePacket* scorePacket = (SScorePacket*)packet;

   scoreData *score = [scoreData sharedData];

   [scoreLabel setString:[NSString stringWithFormat:@"You: %d Challenger: %d", score.score, scorePacket]];

   break;
  }

  default:
   CCLOG(@"received unknown packet type %i (size: %u)", packet->type, packet->size);
   break;
 }

有什么想法吗?谢谢。

【问题讨论】:

    标签: iphone objective-c enums int game-center


    【解决方案1】:

    试试:

    [scoreLabel setString:[NSString stringWithFormat:@"You: %d Challenger: %d", score.score, scorePacket->score]]; // Note: scorePacket.score
    

    您正在尝试打印指向分数包的指针,而不是包中的分数。

    【讨论】:

    • 啊,当然,现在这似乎很明显,但我明白了:错误:在非结构或联合的东西中请求成员“分数”
    • 和你说的差不多是scorePacket->score
    【解决方案2】:

    需要 scorePacket->score 而不是 scorePacket。打印错误的东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-03
      • 1970-01-01
      • 1970-01-01
      • 2015-06-28
      • 1970-01-01
      • 1970-01-01
      • 2019-04-10
      相关资源
      最近更新 更多