由Struct到NSData和NSValue

NSValue:(只能存放那些没有指针变量的结构,不然就只有指针地址被编码,而数据没有被编码)

是一个存储C/C++或者Obj-C数据的容器类。它可以保存任意类型的数据,比如C/C++标准的int,float,char等,也可以是指针、结构,以及Obj-C的对象。

NSValue类的目标就是允许以上数据类型的数据结构能够被添加到集合里。

使用NSValue要注意:不可以存储C字符串、不定长数组/结构和其他一些不定长的数据类型到NSValue中,你应该使用NSString或者NSData来存储此类不定长数据。当然你可以把一个指向变长对象的指针存储在NSValue对象中。

typedef struct{

    char value1;

    char value2;

    int  value3;  

}NSValueTest;


NSValueTest user={@"张三",@"hehe",2}; 
NSValue *userValue=[NSValue valueWithBytes:&user objCType:@encode(User)]; 
NSArray *myArray=[NSArray arrayWithObjects:@"h1",userValue,nil];

userValue=[myArray objectAtIndex:1]; 
[userValue getValue:&user]; 
NSLog(@"用户姓名: %@",user.name);


NSDictionary:

 1.   将   infoStruct转换为NSData 

     NSData * msgData = [[NSData alloc]initWithBytes:&infoStruct length:sizeof(infoStruct)];


     2.  将    msgData转换为  MYINFO  对象。


      struct  MYINFO  infoStruct2;

      [msgData getBytes:&infoStruct2 length:sizeof(infoStruct2)];




http://www.tekuba.net/program/276/

http://www.cnblogs.com/pengyingh/articles/2371398.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值