我们可以使用游戏中心在通过蓝牙连接的设备之间发送NSString值吗
我们可以使用游戏中心在通过蓝牙连接的设备之间发送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
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},我需要以与所示相同的格式发送数据。现在,我怎样才能得到我的名字字符串