2011-03-21 76 views
20

我有以下結構:構造NSData以構造?

typedef enum 
{ 
    kPacketTypeJoin = 1, 
    kPacketTypeServerAcceptedJoin, 
    kPacketTypeSelectedNumber, 
} PacketTypes;  
typedef struct 
{ 
    PacketTypes type; 
    NSString *name; 
} PacketJoin; 

我將如何轉換成PacketJoin NSData的和回PacketJoin一遍嗎?

回答

37
// make a NSData object 
NSData *myData = [NSData dataWithBytes:&myPacketJoin length:sizeof(myPacketJoin)]; 

// make a new PacketJoin 
PacketJoin newJoin; 
[myData getBytes:&newJoin length:sizeof(newJoin)]; 
+0

將在NSString中的結構? – ninjaneer 2011-03-21 03:40:51

+2

它將複製包含在結構中的指針。 NSString對象本身在結構體外部,不會包含在數據中。 – Chuck 2011-03-21 03:48:23

+2

@Ninja,如果你打算存儲/發送這些數據,NSString將不會被髮送,否。你只會以原始設備上的字符串*所在的內存地址結束。 – 2011-03-21 03:48:51