我想发送struct
给GameCenter中的其他玩家。 我已阅读关于此的其他问题,但是,我无法让他们中的任何人工作。NSString * to Char [](GameCenter Send Struct)
我需要得到@"1234"
成char[4]
(例如炭[0] = '1',炭[1] = '2',等等)
我试图[NSString UTF8String]
,但它不似乎不做我想做的事。
它指定罚款,但是当我把它放回NSString *
与[NSString stringWithUTF8String:]
,它返回空白。
如果有人可以告诉我转换和转换,它将不胜感激。
谢谢。
编辑:
我无法得到它的工作:/这是我的代码(删节版):
Matchmaker.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
}
}
好吧,'-UTF8String'的结果被终止了,但是如果他将它复制到一个缓冲区而不允许终止空间的话,那将会是一个问题。 – 2012-04-23 15:23:37
@DavidGelhar完全(+1)。尽管那*是我在原始答案中指定的缓冲区,但我已经添加了一个更完整的说明来澄清。 – justin 2012-04-23 16:09:43
我仍然无法完成它的工作。我想我错过了一些超级明显的东西。我用我的代码编辑了我的帖子。谢谢您的帮助。 – 2012-04-23 22:31:54