从零开始学习iOS开发-股票记帐本1.0(2)
发布日期:2022-02-01 13:46:24
浏览次数:51
分类:技术文章
本文共 2247 字,大约阅读时间需要 7 分钟。
4. 数据持久化
定义一个NsMutable *Data来存储数据,在这个App中使用属性文件进行数据持久话。具体的数据持久化代码如下
-(id)init{ //当应用从storyboard中加在视图控制器时,uikit将会自动触发该方法 if ((self=[super init])) { [self loadData]; } return self;}#pragma mark 数据加载和保存- (NSString *)documentsDirectory{ NSArray *path=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);//NSDocumentDirectory表明查找Documents目录的路径,NSUserDomainMask表明讲搜素限制在应用的沙盒内 NSString *documentsDirectory=path[0];//每个应用只有一个Documents目录 return documentsDirectory;}- (NSString *)dataFilePath{ //创建到plist的完整路径 return [[self documentsDirectory]stringByAppendingPathComponent:@"data.plist"];}- (void)saveData{ NSMutableData *data=[[NSMutableData alloc]init]; NSKeyedArchiver *archiver=[[NSKeyedArchiver alloc]initForWritingWithMutableData:data]; [archiver encodeObject:self.Data forKey:@"data"];//_局部变量,self属性 [archiver finishEncoding]; [data writeToFile:[self dataFilePath] atomically:YES]; //获取sellData数组中的内容,然后分两步讲它转换成二进制数据块,然后写进到文件中,chapter13p5}- (void) loadData{ NSString *path=[self dataFilePath]; //检查沙盒中是否存在该文件 if ([[NSFileManager defaultManager]fileExistsAtPath:path]) { //当应用从沙河中找到path.plist文件时,我们无需创建一个新的数组,可以从该文件中加载整个数组和其中内容(savechecklistitem的逆向操作) NSData *data=[[NSData alloc]initWithContentsOfFile:path];//将文件内容加载到nsdata对象中 NSKeyedUnarchiver *unarchiver=[[NSKeyedUnarchiver alloc]initForReadingWithData:data];//创建一个nskeyedunarchiver对象 self.Data=[unarchiver decodeObjectForKey:@"data"]; [unarchiver finishDecoding]; }else{ self.Data=[[NSMutableArray alloc]initWithCapacity:100]; }}
5. 数据的加载和保存
4中只负责数据的持久化,此外还需要对数据进行保存和加载,这个过程在stockData.h和.m文件中进行,一下罗列主要代码
.h文件@interface stockData : NSObject@property (strong, nonatomic) NSMutableArray *sellData;
.m文件
- (id)init{ //当用户添加一个新的stockdata到应用中时会调用常规init方法 if ((self=[super init])) { self.sellData=[[NSMutableArray alloc]initWithCapacity:20]; } return self;}- (id)initWithCoder:(NSCoder *)aDecoder{ //加载 if ((self=[super init])) { self.sellData=[aDecoder decodeObjectForKey:@"SellData"]; } return self;}- (void)encodeWithCoder:(NSCoder *)aCoder{ //保存 [aCoder encodeObject:self.sellData forKey:@"SellData"];}
转载地址:https://blog.csdn.net/shidesheng5435/article/details/48739591 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2024年03月15日 19时31分29秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
mysql 自适应字段宽度_box-sizing解决自适应布局容器宽度问题
2019-04-21
java 配置文件配置路径_Java读取配置文件路径设置
2019-04-21
vux 选择器_vue中的scoped分析以及在element-UI和vux中的应用
2019-04-21
java实验一目的_Java实验报告(实验一)
2019-04-21
php 内存泄露检测工具,php - 诊断内存泄漏 - 允许#bytes的内存大小耗尽
2019-04-21
Java 去除空格获取文件路径
2019-04-21
python 批量修改文件名称去除文件名中空格
2019-04-21
python 将文件名写入 txt文件
2019-04-21
python 3 读取文件txt 打印print
2019-04-21
python 查找txt文件中的字符串
2019-04-21
python 字符串替换 本地地址转换为网络地址
2019-04-21
Python3 http 服务任意目录 设定访问目录
2019-04-21
Python 移动鼠标到 句柄指定位置
2019-04-21
python窗口置顶 并输入中文
2019-04-21
Android studio 读取sd卡mp3 播放音乐
2019-04-21
Android studio 47 listview 处理单击和长按事件
2019-04-21
android studio 48 Android选项卡TabHost
2019-04-21