在IOS的数据处理中常用的四种数据存取方式
来源:互联网 发布:sql commit 编辑:程序博客网 时间:2024/06/06 01:32
1.NSKeyedArchiver
2.NSUserDefaults
3. Write写入方式
4. SQLite3
首先介绍第一种保存方式:NSKeyedArchiver
代码很简单就不多解释了直接上代码:
- //=================NSKeyedArchiver========================
- NSString *saveStr1 =@"我是";
- NSString *saveStr2 =@"数据";
- NSArray *array = [NSArrayarrayWithObjects:saveStr1, saveStr2, nil];
- //----Save
- //这一句是将路径和文件名合成文件完整路径
- NSString *Path =[NSSearchPathForDirectori
esInDomains(NSDocumentDirectory,NSUserDomainMask, YES) objectAtIndex:0]; - NSString *filename = [PathstringByAppendingPathCom
ponent:@"saveDatatest"]; - [NSKeyedArchiverarchiveRootObject:array toFile:filename];
- //用于测试是否已经保存了数据
- saveStr1 =@"hhhhhhiiii";
- saveStr2 =@"mmmmmmiiii";
- //----Load
- array = [NSKeyedUnarchiverunarchiveObjectWithFile: filename];
- saveStr1 = [arrayobjectAtIndex:0];
- saveStr2 = [arrayobjectAtIndex:1];
- CCLOG(@"str:%@",saveStr1);
- CCLOG(@"astr:%@",saveStr2);
首先介绍第二种保存方式:NSUserDefaults
代码很简单就不多解释了直接上代码:
- //=================NSUserDefaults========================
- NSString *saveStr1 =@"我是";
- NSString *saveStr2 =@"数据";
- NSArray *array = [NSArrayarrayWithObjects:saveStr1, saveStr2, nil];
- //Save
- NSUserDefaults *saveDefaults =[NSUserDefaults standardUserDefaults];
- [saveDefaultssetObject:array forKey:@"SaveKey"];
- //用于测试是否已经保存了数据
- saveStr1 =@"hhhhhhiiii";
- saveStr2 =@"mmmmmmiiii";
- //---Load
- array = [saveDefaultsobjectForKey:@"SaveKey"];
- saveStr1 = [arrayobjectAtIndex:0];
- saveStr2 = [arrayobjectAtIndex:1];
- CCLOG(@"str:%@",saveStr1);
- CCLOG(@"astr:%@",saveStr2);
首先介绍第三种保存方式:Write写入方式
代码很简单就不多解释了直接上代码:
- //=================Write写入方式========================
- NSString *saveStr1 =@"我是";
- NSString *saveStr2 =@"数据";
- NSArray *array = [NSArrayarrayWithObjects:saveStr1, saveStr2, nil];
- //----Save
- NSArray *paths =NSSearchPathForDirectori
esInDomains(NSDocumentDirectory,NSUserDomainMask, YES); - NSString*documentsDirectory = [paths objectAtIndex:0];
- if(!documentsDirectory) {
- NSLog(@"没找到");
- }
- NSMutableArray*saveDataArray=nil;
- NSString *appFile =[documentsDirectory stringByAppendingPathCom
ponent:@"Savedatas.plist"]; - [[NSArrayarrayWithObjects:array,nil] writeToFile:appFileatomically:NO];
- //用于测试是否已经保存了数据
- saveStr1 =@"hhhhhhiiii";
- saveStr2 =@"mmmmmmiiii";
- //----Load
- if([[NSFileManager defaultManager]fileExistsAtPath:appFile]){
- saveDataArray =[NSMutableArrayarrayWithContentsOfFile:appFile];
- } else{
- saveDataArray =[NSMutableArray arrayWithContentsOfFile:[[NSBundle mainBundle]pathForResource:@"Savedatas"ofType:@"plist"]];
- }
- NSArray *strArray =[saveDataArray objectAtIndex:0];
- saveStr1 = [strArrayobjectAtIndex:0];
- saveStr2 = [strArrayobjectAtIndex:1];
- CCLOG(@"str:%@",saveStr1);
- CCLOG(@"astr:%@",saveStr2);
不论哪种形式代码都很容易理解,那么以上三种保存方式代码中都带有如下两行代码;
- saveStr1 =@"hhhhhhiiii";
- saveStr2 =@"mmmmmmiiii";
由于本章介绍过于简单,那么下面Himi对Write写入方式保存数据和读取数据封装了两个方法这里放出,给童鞋们行个方便:(其他两种大家封装起来风容易了,这里就不写了);
封装的函数如下:
- //保存游戏数据
- //参数介绍:
- // (NSMutableArray *)data :保存的数据
- //(NSString *)fileName :存储的文件名
- -(BOOL) saveGameData:(NSMutableArray *)datasaveFileName:(NSString *)fileName
- {
- NSArray *paths =NSSearchPathForDirectori
esInDomains(NSDocumentDirectory,NSUserDomainMask, YES); - NSString *documentsDirectory =[paths objectAtIndex:0];
- if (!documentsDirectory){
- NSLog(@"Documents directory notfound!");
- return NO;
- }
- NSString *appFile =[documentsDirectorystringByAppendingPathCom
ponent:fileName]; - return ([data writeToFile:appFileatomically:YES]);
- }
- //读取游戏数据
- //参数介绍:
- //(NSString *)fileName :需要读取数据的文件名
- -(id)loadGameData:(NSString *)fileName
- {
- NSArray *paths =NSSearchPathForDirectori
esInDomains(NSDocumentDirectory,NSUserDomainMask, YES); - NSString *documentsDirectory =[paths objectAtIndex:0];
- NSString *appFile =[documentsDirectorystringByAppendingPathCom
ponent:fileName]; - NSMutableArray *myData =[[[NSMutableArray alloc] initWithContentsOfFile:appFile]autorelease];
- return myData;
- }
使用代码如下:
- NSString*saveStr1 = @"测试保存读取";
- NSString *saveStr2 =@"两个函数";
- NSMutableArray*array = [NSMutableArray arrayWithObjects:saveStr1, saveStr2,nil];
- [self saveGameData:arraysaveFileName:@"Himi"];
- NSMutableArray*temp=(NSMutableArray*)[self loadGameData:@"Himi"];
- CCLOG(@"%@--%@",[temp objectAtIndex:0],[tempobjectAtIndex:1]);
1.对于取出数据的时候需要注意,例如如下代码:
- NSUserDefaults*saveDefaults = [NSUserDefaultsstandardUserDefaults];
- NSMutableArray *arraySaveData=[saveDefaults objectForKey:@"OhSaveData"];
- //NSMutableArray *arraySaveData=[NSMutableArrayarrayWithArray:[saveDefaults objectForKey:@"OhSaveData"]];
第二句代码是通过一个文件名获取你存储的数据,返回数据数组,但是!一定要注意这里返回的数据数组是不可修改的!及时你将读取的数据赋给一个可修改的数组中也一样无法修改其中的数据,所以如果你想将取出的数据进行修改那么这里需要要使用第三行代码来获取,这里Himi将获取出的数据数组首先copy给了可修改数组中,那么此时你的可修改数组就可以正常修改了!
2.修改已经的存储文件;代码如下:
- NSUserDefaults*saveDefaults = [NSUserDefaultsstandardUserDefaults];
- [saveDefaultssetObject:arraySaveData forKey:@"已经存在的文件名"];
OK,本篇就介绍这里吧~继续忙了~
- 在IOS的数据处理中常用的四种数据存取方式
- iOS开发之数据持久化(iOS中常用的四种数据存储方式)
- iOS中常用的四种数据持久化方法
- iOS中常用的四种数据持久化方法
- IOS中常用的四种数据持久化方法
- IOS中常用的四种数据持久化方法
- iOS中常用的四种数据持久化方法
- iOS上常用四种数据存取方法
- iOS 常用四种数据存储方式
- IOS的四种数据存储方式及优劣
- iOS 中常用的四种数据持久化的方法
- iOS常用的四种数据持久化
- IOS-常用的四种数据持久化方法
- iOS中常用的四种数据持久化方法简介
- iOS中常用的四种数据持久化方法简介
- iOS中常用的四种数据持久化方法简介
- iOS中常用的四种数据持久化方法简介
- iOS中常用的四种数据持久化方法简介
- Mac木马病毒再现(OSX/Crisis)
- Android开发中各种问题集锦
- 基本技能的重要性
- 关于如何在iOS开发中使用风火轮UIActivityIndicatorView提示加载等待
- 在IOS中使用ASIHTTPRequest下载(支持断点续传)
- 在IOS的数据处理中常用的四种数据存取方式
- iOS中的常用基础小知识
- 基于matcom的光栅衍射仿真程序
- 图形和Shader技术
- 我就喜欢 6大"N饭"永不投诚经典语录
- 游戏图形引擎中 Shader System 的设计
- 3D模板阴影原理
- 场景管理
- 魔兽世界角色换装分析