2011-01-15 2 views
0

게임 센터 멀티 플레이어 용 iphone 게임에서 int를 보내려고합니다.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; 
} 

어떤 아이디어가? 감사.

답변

1

시도 :

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

당신은 - 더 - 패킷의 포인터 - 투 - scorePacket 아닌 점수를 인쇄하려고했던 것입니다.

+0

아 물론 당연한 것 같지만 오류가 발생합니다 : 구조체 또는 공용체가 아닌 멤버의 '점수'요청 –

+1

거의 'scorePacket-> score'라고 말한 내용입니다. –

0

scorePacket보다는 scorePacket-> score가 필요합니다. 잘못된 것을 인쇄합니다.

관련 문제