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,如需转载请自行联系原作者