发送NSArray&通过游戏中心在NSData中构建

时间:2014-10-22 14:12:58

标签: ios objective-c nsdata game-center multiplayer

我正在制作一款在多人游戏中心的设备之间发送一些数据的游戏。

我发送的数据包括NSArray&一条消息,通知其他玩家分数的变化。

我已经为得分消息定义了结构:

typedef NS_ENUM(NSUInteger, MessageType) {
    kMessageTypeUpdateScore
};

typedef struct {
    MessageType messageType;
} Message;

typedef struct {
    Message message;
    int score;
} MessageUpdateScore;

以下是接收数据的代码:

- (void)match:(GKMatch *)match didReceiveData:(NSData *)data fromPlayer:(NSString *)playerID {

    NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:data];
    // data is an array

    Message *message = (Message *)[data bytes];
    if (message->messageType == kMessageTypeUpdateScore) {
        // data is a message
    }

}

我的问题是 - 如何区分NSArray&消息,我可以解压缩NSData并相应地做相应的事情吗?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,你可以在这里找到我的解决方案: How to Covert struct with an Array of string to NSData and vice versa Swift

如果您找到了更好的解决方案,请留下一些反馈。

您可以找到一个有效的例子here