我想發送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