博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
结构体如何使用NSData包装
阅读量:6943 次
发布时间:2019-06-27

本文共 1297 字,大约阅读时间需要 4 分钟。

http://blog.csdn.net/tangaowen/article/details/7345375

也许你已经非常习惯了使用NSArray和NSDictionary写成.plist来保存游戏的分数记录,非常爽吧,但是对于用惯了C的人会感觉很难受,你必须的先将他们整理成整齐的ObjC格式才行,这里将介绍一种保存任意类型的方法。可能有点小题大作,但毕竟符合一部份人的使用习惯。进入正题

 

//先来两结构,注意我们要保存的可以是 int ,float,NSString,居然还可以是UIImage!!

 

typedef struct _INT{

int t1;

int t2;

}INT_STRUCT;

 

typedef struct _STRING{

NSString *st1;

NSString *st2;

UIImage *image;

}STRING_STRUCT;

 

//初始化两个变量

 

INT_STRUCT theInt = {

2,5};

STRING_STRUCT theString = {

@"string1",@"string2",[UIImage imageNamed:@"icon57.png"]};

 

//将这两个变量添加到data中,他们现在是二进制

 

NSMutableData *theData = [NSMutableData data];

[theData appendBytes:&theInt length:sizeof(INT_STRUCT)];

[theData appendBytes:&theString length:sizeof(STRING_STRUCT)];

 

 

//保存到你的路径,可以不需要后缀名

[theData writeToFile:@"mySave" atomically:YES]; 

 

 

//读取

 

INT_STRUCT newInt;

STRING_STRUCT newString;

NSMutableData *newData = [NSData dataWithContentsOfFile:@"mySave"];

 

//按地址赋值,注意range的范围

[newData getBytes:&newInt range:NSMakeRange(0,sizeof(INT_STRUCT))];

[newData getBytes:&newString range:NSMakeRange(sizeof(INT_STRUCT),sizeof(INT_STRUCT)+sizeof(STRING_STRUCT))];

 

 

NSLog(@"newInt.t1===%d",newInt.t1);

NSLog(@"newString.image===%@",newString.image);

 

 

NSLog(@"theString.image===%@",theString.image);

 

完了,比较一下我们输出的newString.image和theString.image,值是一样的,你可以用UIImageView将它显示出来,看看对不对

你可能感兴趣的文章
详解java开发环境的配置
查看>>
随记:Linux更改yum源
查看>>
iOS生成二维码
查看>>
DNS基本工作原理,及正反向解析和主从同步测试
查看>>
安装Nginx
查看>>
在树莓派2/B+上安装Python和OpenCV
查看>>
有意思的python***案例
查看>>
PHP Warning 报“timezone”错
查看>>
思科CCIE证书真伪、有效性查询方式
查看>>
局域网内搭建 本地yum 源
查看>>
golang: 常用数据类型底层结构分析
查看>>
How to Set Cores-Per-Socket Parameter for a Virtual Machine
查看>>
我的友情链接
查看>>
如何做出一个弹出窗口
查看>>
solidity 0.5.7简明教程
查看>>
你好啊中国
查看>>
冯柯:同步设计在高性能OLTP数据库中的实践
查看>>
iPhone史上最全的使用教程
查看>>
推广一款不错的应用“锁屏对对碰”
查看>>
Oracle IO问题解析(九)
查看>>