我们可以使用游戏中心在通过蓝牙连接的设备之间发送NSString值吗

我们可以使用游戏中心在通过蓝牙连接的设备之间发送NSString值吗,nsstring,bluetooth,send,Nsstring,Bluetooth,Send,我们可以使用游戏中心在通过蓝牙连接的设备之间发送NSString值吗 以下是我代码的一部分: typedef enum { messageType1 = 0; messageType2 = 1; } messageType; typedef struct { MessageType messageType; NSString *myName; } MyMessage; 在我的课堂上,我有这个方法来发送信息: MyMessage myMessage; myM

我们可以使用游戏中心在通过蓝牙连接的设备之间发送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;
}

问题:我怎样才能得到我的名字?我可以获取MessageType

将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];

谢谢ILYA2606。您的答案是正确的,但它在我的应用程序中不起作用,因为我正在以Struct和Enum的形式发送数据,如代码所示。我不能以NSArray的形式发送,因为数据太大,会影响我的应用程序的性能。例如,MessageType是messageType1、messageType2、…。messageType20和myMessage包含的内容太多。还有一些带有MessageType的结构。在接收端,我使用iftype=myMessage->messageType{执行一些任务,比如printmyname},我需要以与所示相同的格式发送数据。现在,我怎样才能得到我的名字字符串