1

Game Centerを使用して、Bluetooth経由で接続されたデバイス間でNSString値を送信できますか?

これが私のコードの一部です:

typedef enum {
    messageType1 = 0;
    messageType2 = 1;
}
messageType;

typedef struct {
    MessageType messageType;
    NSString *myName;
} MyMessage;

そして私のクラスでは、メッセージを送信するための次のメソッドがあります。

 MyMessage myMessage;
 myMessage.messageType = messageType2;
 myMessage.myName = @"ABCDEFGH";
 NSData *data = [NSData dataWithBytes:&myMessage length:sizeof(MyMessage)];
 [self sendDataToAllPeers:data withDataMode:GKSendDataReliable error:error];

データを受信するには、次の方法があります。

-(void) receiveData:(NSData *)data fromPeer:(NSString *)peer inSession: (GKSession *)session context:(void *)context{
    MyMessage myMessage = *((MyMessage *) [data bytes]);
    type = myMessage.messageType;
    name = myMessage.myName;
}

質問:どうすれば入手できmyNameますか?(私は得ることができますMessageType

4

1 に答える 1

0

NSDataをアーカイブされたNSArrayとして送信します。

NSArray *array = [[NSArray alloc] initWithObjects:myMessage.messageType, myMessage.myName, nil];
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:array];
[self sendDataToAllPeers:data];

NSDataを受信し、NSArrayにアーカイブ解除します。

NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithData: data];
type = [array objectAtIndex:0];
name = [array objectAtIndex:1];
于 2013-03-15T08:31:10.093 に答える