原文:http://www.cnblogs.com/xiaofeixiang/p/4263498.html?utm_source=tuicool&utm_medium=referral
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 (@ "文件删除成功" ); } |