iOS开发-plist文件增删改查
plist第一次看到这个后缀名文件的时候感觉怪怪的,不过接触久了也就习以为常了,plist是Property List的简称可以理解成属性列表文件,主要用来存储串行化后的对象的文件。扩展名为.plist,因此被称为plist文件,xCode中默认的是一种树状的结构展现出来数据,可视化的动态增删改查,非常人性化,不过最终的结果是以XML形式存储的,Plist文件可以用于存储用户的一些设置信息,具体根据需求而定。 简单创建文件 简单创建文件就是说可以直接从xCode创建,右击项目new File,可以添加一个plist文件: 创建一个UserData.plist文件,之后的内容如下: 右击open as->source code,代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <?xml version= "1.0" encoding= "UTF-8" ?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd" > <plist version= "1.0" > <dict> <key>Login</key> <dict> <key>UserName</key> <string>FlyElephant</string> <key>UserPassWord</key> <string>123456</string> </dict> </dict> </plist> 读取设置的信息: 1 2 3 4 5 6 //读取Property List文件 NSString *userDataPath = [[ NSBundle mainBundle] pathForResource:@ "UserData" ofType:@ "plist" ]; NSMutableDictionary *data = [[ NSMutableDictionary alloc] initWithContentsOfFile:userDataPath]; NSLog (@ "%@" ,data); NSLog (@ "用户名:%@ 密码:%@" , data[@ "Login" ][@ "UserName" ],data[@ "Login" ][@ "UserPassWord" ]); [data setObject:@ "登录信息" forKey:@ "Login" ]; 增删改查 文件添加,上面是应用程序中添加文件,这个时候可以选择代码在沙盒中添加,代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 NSArray *sandboxpath= NSSearchPathForDirectoriesInDomains ( NSDocumentDirectory , NSUserDomainMask , YES ); //获取完整路径 NSString *documentsDirectory = [sandboxpath objectAtIndex:0]; NSString *plistPath = [documentsDirectory stringByAppendingPathComponent:@ "sandbox.plist" ]; //存储根数据 NSMutableDictionary *rootDic = [[ NSMutableDictionary alloc ] init]; //字典中的详细数据 NSMutableDictionary *userDataDic = [[ NSMutableDictionary alloc]init]; [userDataDic setObject:@ "Flephant" forKey:@ "UserName" ]; [userDataDic setObject:@ "http://www.cnblogs.com/xiaofeixiang/" forKey:@ "UserPassWord" ]; [rootDic setObject:userDataDic forKey:@ "Login" ]; //写入文件 [rootDic writeToFile:plistPath atomically: YES ]; NSLog (@ "%@" , NSHomeDirectory ()); NSLog (@ "写入成功" ); 路径如下,具体路径获取上一篇文章已经可以看到: 读取数据: 1 2 3 4 5 6 7 //获取路径 NSArray *sandboxpath= NSSearchPathForDirectoriesInDomains ( NSDocumentDirectory , NSUserDomainMask , YES ); NSString *filePath = [[sandboxpath objectAtIndex:0] stringByAppendingPathComponent:@ "sandbox.plist" ]; NSLog (@ "%@" , NSHomeDirectory ()); //获取数据 NSMutableDictionary *searchdata = [[ NSMutableDictionary alloc] initWithContentsOfFile:filePath]; NSLog (@ "%@" ,searchdata); 修改文件: 1 2 3 4 5 6 7 8 9 10 11 12 13 //获取路径 NSString *filepath = [[ NSSearchPathForDirectoriesInDomains ( NSDocumentDirectory , NSUserDomainMask , YES )objectAtIndex:0]stringByAppendingPathComponent:@ "sandbox.plist" ]; //所有的数据列表 NSMutableDictionary *datalist= [[[ NSMutableDictionary alloc]initWithContentsOfFile:filepath]mutableCopy]; //获取Login节点 NSMutableDictionary *loginData = [datalist objectForKey:@ "Login" ]; [loginData setValue: @ "FlyElephant" forKey:@ "UserName" ]; [loginData setValue: @ "123456" forKey:@ "UserPassWord" ]; [datalist setValue:loginData forKey:@ "Login" ]; [datalist writeToFile:filepath atomically: YES ]; NSLog (@ "修改成功" ); 删除文件: 1 2 3 4 5 6 NSFileManager *manager=[ NSFileManager defaultManager]; //文件路径 NSString *filepath = [[ NSSearchPathForDirectoriesInDomains ( NSDocumentDirectory , NSUserDomainMask , YES )objectAtIndex:0]stringByAppendingPathComponent:@ "sandbox.plist" ]; if ([manager removeItemAtPath:filepath error: nil ]) { NSLog (@ "文件删除成功" ); } 本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/4263498.html,如需转载请自行联系原作者