struct
GameCenter の他のプレイヤーにを送信したいです。これに関する他の質問を読みましたが、どれも機能しません。
(ex char[0] = '1'、char[1] = '2' など)に@"1234"
入る必要があります。char[4]
試してみ[NSString UTF8String]
ましたが、私が望むことをしていないようです。
割り当ては問題ありませんが、 で引き戻すNSString *
と[NSString stringWithUTF8String:]
、空白が返されます。
誰かが私との間の変換を示すことができれば、それは大歓迎です.
ありがとう。
編集:
私はそれを動作させることができません:/これが私のコードです(要約版):
仲人.h
enum { NChars = 4 };
typedef struct {
MessageType messageType;
} Message;
typedef struct {
Message message;
char code[NChars];
} MessageGameCode;
@interface Matchmaker : CCLayer <GameCenterMasterDelegate>{
NSString *_code;
}
@property (nonatomic,retain) NSString *_code;
仲人.m
@synthesize _code;
-(void)viewDidLoad{
self._code = @"1234";
}
- (void)sendCode {
NSLog(@"Sending Code....");
MessageGameCode message;
message.message.messageType = kMessageTypeGameCode;
NSString * const source = self._code;
const char* const sourceAsUTF8 = source.UTF8String;
for (size_t idx = 0; idx < NChars; ++idx) {
message.code[idx] = sourceAsUTF8[idx];
}
NSData *data = [NSData dataWithBytes:&message length:NChars];
[self sendData:data];
}
- (void)match:(GKMatch *)match didReceiveData:(NSData *)data fromPlayer:(NSString *)playerID {
Message *message = (Message *) [data bytes];
if (message->messageType == kMessageTypeGameCode) {
MessageGameCode *codeMessage = (MessageGameCode *)[data bytes];
self._code = [[NSString alloc] initWithBytes:codeMessage->code length:NChars encoding:NSUTF8StringEncoding];
[self setGameState:kGameStateWaitingForStart];
NSLog(@"Game Code Recieved");
NSLog(@"Recieved Code: %@",self._code); //This always shows self._code as blank
}
}