1

我们可以使用 Game Center 在通过蓝牙连接的设备之间发送 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 回答