2011-03-21 19 views
20

Aşağıdaki yapı vardır:Yapıları NSData Yapıları?

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

nasıl NSData içine PacketJoin dönüştürmek ediyorum ve tekrar PacketJoin için?

cevap

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

bu yapıdaki NSString ile çalışacak mı? – ninjaneer

+2

Yapı içinde bulunan işaretçiyi kopyalar. NSString nesnesi, yapının dışındadır ve verilerde yer almaz. – Chuck

+2

@Ninja, bu veriyi kaydetmeyi/göndermeyi planlıyorsanız, NSString birlikte gönderilmez, no. Sadece orijinal cihazda * dizesinin * olduğu hafıza adresiyle sonlanacaksınız. –