2012-09-08 30 views
7

thể trùng lặp:
Send and receive NSData via GameKitLàm thế nào để đóng gói struct trong NSData?

Tôi có struct trong đó bao gồm con trỏ float int biến và 2 (mảng). Làm thế nào tôi có thể đóng gói cấu trúc này ib NSData và sau đó giải nén nó?

+1

Sử dụng [ 'dataWithBytes'] (http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation /Classes/NSData_Class/Reference/Reference.html#//apple_ref/occ/clm/NSData/dataWithBytes:length :) và cung cấp '(const void *) & struct_data' và' sizeof struct_data' – oldrinb

Trả lời

10

Bạn có thể đóng gói cấu trúc bằng cách sử dụng phương pháp dataWithBytes pf NSData:

struct aStruct { 
/* Implementation */ 
}; 

//Struct variable 
aStruct exampleStruct; 

// pack the struct into an NSData Object 
NSData *myData = [NSData dataWithBytes:&exampleStruct length:sizeof(exampleStruct)]; 

// get back the the struct from the object 
[myData getBytes:&exampleStruct length:sizeof(exampleStruct)]; 
+0

Cảm ơn! Bạn cũng có thể hiển thị là có float * x và float * y trong struct làm thế nào để khởi tạo chúng, thêm số và sau đó nhận được chúng từ cấu trúc unpacked? Coz nhận thức của tôi không hoạt động và tôi nhận được một số khác trong mảng, không phải là tôi đặt vào – Mathemage

+2

@ValentinKhrulkov nếu các cấu trúc này biểu diễn dữ liệu cần được tuần tự hóa và tồn tại bên ngoài ngữ cảnh của ứng dụng đang chạy. tốt cho bạn để có con trỏ bên trong của họ. –

+0

@Carl Veazey nono, bên trong ứng dụng, chỉ cần làm thế nào để làm điều đó? – Mathemage

Các vấn đề liên quan