plist基本操作

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

重要概念:某些路径下“只能读,不能写”的原因

iphone、ipad真机上

Resouces文件夹:是只读的,无法写入。

document 和temp文件夹:可读,可写。

一、工程结构

二、源代码

1、头文件:PlistManage.h

@interfacePlistManage : NSObject-(void)resourcePathFileRead;//当前工程资源目录,不同于真机“沙箱”中的路径-(NSString *)docPath;//获取document文件夹路径-(BOOL)isDirNeedCreate:(NSString *)dirPath;//判断目录是否需要新创建-(BOOL)isFileNeedCreate:(NSString *)filePath;//判断文件是否需要创建

-(void) doAdd;-(void) doRead;-(void) doModify;-(void) doDelete;@end

2、一些基本函数的实现:

//获取document目录路径-(NSString *)docPath

{

NSArray* paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);return[paths objectAtIndex:0];

}//路径是否需要创建-(BOOL)isDirNeedCreate:(NSString *)dirPath

{if( NO ==[[NSFileManager defaultManager] fileExistsAtPath:dirPath] )

{return[[NSFileManager defaultManager] createDirectoryAtPath:dirPath

withIntermediateDirectories:YES

attributes:nil

error:NULL];

}returnNO;

}//文件是否需要创建-(BOOL)isFileNeedCreate:(NSString *)filePath{if( NO ==[[NSFileManager defaultManager] fileExistsAtPath:filePath] )

{return[[NSFileManager defaultManager] createFileAtPath:filePath contents:nil attributes:nil];

}returnNO;

}

3、添加:包括创建不存在的空文件

-(void) doAdd{

NSString*docPath=[self docPath];

NSLog(@"当前docment路径:\n%@",docPath);

NSString*dataFile=[docPath stringByAppendingPathComponent:@"docData.plist"];if(YES==[self isFileNeedCreate:dataFile]) {

NSLog(@"文件原先不存在,现已新建空文件!");

}else{

NSLog(@"文件已存在,无需创建!");

}

NSMutableDictionary*plistDic =[[NSMutableDictionary alloc ] init];//添加2个“单条记录”[plistDic setObject:@"shanghai"forKey:@"recordKey001"];

[plistDic setObject:@"beijing"forKey:@"recordKey002"];//添加2个“字典记录”[plistDic setObject:[NSDictionary dictionaryWithObjectsAndKeys:@"Jack",@"name",@"22",@"age",nil] forKey:@"dicKey001"];

[plistDic setObject:[NSDictionary dictionaryWithObjectsAndKeys:@"Tom",@"name",@"33",@"age",nil] forKey:@"dicKey002"];

[plistDic writeToFile:dataFile atomically:YES];//完全覆盖NSLog(@"添加内容完成!!");

}

运行结果:

对应路径下生成了新文件:

内容如下:

4、读取

-(void) doRead{

NSString*dataFile=[[self docPath] stringByAppendingPathComponent:@"docData.plist"];//读取所有内容NSDictionary* dic =[NSDictionary dictionaryWithContentsOfFile:dataFile];

NSLog(@"完整内容:\n%@",dic);//读取第一层“字典记录”NSDictionary* dicValue=[dic objectForKey:@"dicKey001"];

NSLog(@"读取第一层“字典记录”:\n%@",dicValue);//读取第一层“字典记录”中的“子元素”NSLog(@"读取第一层“字典记录”中的“子元素”:\nname=%@",[dicValue objectForKey:@"name"]);//读取第一层“单条记录”NSLog(@"读取第一层“单条记录”:\nrecordKey001=%@",[dic objectForKey:@"recordKey001"]);

}

运行结果:

5、修改

-(void) doModify{

NSString*dataFile=[[self docPath] stringByAppendingPathComponent:@"docData.plist"];

NSMutableDictionary*dic =[[[NSMutableDictionary alloc]initWithContentsOfFile:dataFile]mutableCopy];//修改“单条记录”NSString *city = [dic objectForKey:@"recordKey001"];

city=@"shanghai-new";

[dic setObject:city forKey:@"recordKey001"];//修改“字典记录”NSMutableDictionary *personInfo = [dic objectForKey:@"dicKey001"];

NSString*name = [dic objectForKey:@"name"];

name=@"Jack-new";

[personInfo setValue:name forKey:@"name"];

[dic setValue:personInfo forKey:@"dicKey001"];//写入文件[dic writeToFile:dataFile atomically:YES];

NSDictionary* dicResult =[NSDictionary dictionaryWithContentsOfFile:dataFile];

NSLog(@"修改结果:\n%@",dicResult);

}

运行结果:

6、删除

-(void) doDelete{

NSString*dataFile=[[self docPath] stringByAppendingPathComponent:@"docData.plist"];

NSMutableDictionary*dic =[[[NSMutableDictionary alloc]initWithContentsOfFile:dataFile]mutableCopy];//删除“单条记录”[dic removeObjectForKey:@"recordKey001"];

[dic removeObjectForKey:@"dicKey001"];//删除“字典记录”//写入文件[dic writeToFile:dataFile atomically:YES];

NSDictionary* dicResult =[NSDictionary dictionaryWithContentsOfFile:dataFile];

NSLog(@"修改结果:\n%@",dicResult);

}

运行结果:

各个目录的获取:

http://www.cnblogs.com/ios-wmm/p/3299695.html

如果是操作 Resource下的plist文件,可由以下代码完成:只能读,不能写

-(void)resourcePathFileRead{

NSString*plistPath = [[NSBundle mainBundle] pathForResource:@"resourceData"ofType:@"plist"];

NSMutableDictionary*data =[[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];

NSLog(@"resourceData.plist文件信息如下:\n%@", data);

}

三、ios程序的“沙箱原理”

xcode6中的模拟器位置:

/Users/wuxiaofeng/资源库/Developer/

3个基本目录:

原理:

a)iTunes在与iPhone同步时,备份所有的Documents和Library文件。

b)iPhone在重启时,会丢弃所有的tmp文件。

参考:沙箱,路径获取,文件操作

http://www.cnblogs.com/dyllove98/archive/2013/07/30/3225955.html

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航