将NSData发送到另一个进程而不仅仅是指针

时间:2012-05-03 18:07:53

标签: iphone objective-c serialization nsdata

  

可能重复:
  Send NSString via Game Center

我已经在这方面工作了两天而且没有到达任何地方,我希望有人可以解决这个问题。

1)我有一个NSMUtableArray 2)通过[encoder encodeObject:myArray]序列化数组中的每个元素;并返回结果并将其分配给名为“cards”的结构“MessageMove”(NSData *类型) MessageMove消息;

...

typedef struct
{
    Message message;
    NSData  *cards;
} MessageMove;

3)现在卡已经转换为NSData类型了我现在想对结构本身做同样的事情,我打电话

NSData * data = [NSData dataWithBytes:& message length:sizeof(message)];

4)最后我将数据发送给其他玩家,如下所示

BOOL success = [[GCHelper sharedInstance].match sendDataToAllPlayers:data withDataMode:GKMatchSendDataReliable error:&error];

问题在于接收端根本没有获得任何卡数据(MessageMove->卡)。这可能是因为NSData *没有被远程发送,而只是指向它的指针。

有谁知道我如何发送实际数据?我整天都在摸着这个问题而不知道如何克服它

非常感谢

1 个答案:

答案 0 :(得分:0)

使MessageMove符合NSCoding协议的Objective-C类。然后将其序列化为NSData对象,并在另一端对其进行反序列化。有关详细信息,请参阅my earlier answer