什么是plist文件?
- plist文件,即属性列表文件,全名是Property List,这种文件的扩展名为.plist,因此,通常被叫做plist文件。它是一种用来存储串行化后的对象的文件,在iOS开发中通常用来存储用户设置,还可以用于存储程序中经常用到而不经常改动的数据。下面就看一下如何创建和读写plist文件。
一、创建plist文件
- 1、在程序中通过新建文件的方式创建
快捷键 command + n
或者File——>New——>File,选择iOS-->Resource-->Property List
然后就是给文件命名:
plist文件命名这里有一点需要注意:
命名的时候不能用Info.plist , INfo.plist, xxxInfo.plist等形式,否则会出现下面的情况,因为系统中存在一个Info.plist文件,会发生冲突。
上图中的plist文件只能是NSDictionary类型,而且添加数据时会出现如下的情况:
添加数据通常情况下,我们想要的并不是这种效果,所以命名的时候要注意。通常我们想要的plist文件是下图中的样子:
在Root这一行,Type可以选择字典或数组。
命名规范的情况
点击Root这一行,然后通过点击右键->Add Row或者点击Root后面的加号来增加一行。这一行中包含三个属性,key、type、value。其中key是字段属性,type是字段类型,value是字段对应的值。而Type又包含7中类型,其中两种是Array和Dictionary,这两种是数组的形式,在它们下面还可以包含许多key-value。
而另外5种是Boolean,data,string,date,number。这5种类型的数据都是被array和dictionary所要包含的数据。
添加数据并赋值
- 2、代码方式创建plist文件
获取本地沙盒路径
NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
获取完整路径
NSString *documentsPath = [path objectAtIndex:0];
NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"newsTest.plist"];
创建数据
//创建数据
NSMutableDictionary *newsDict = [NSMutableDictionary dictionary];
//赋值
[newsDict setObject:@"zhangsan" forKey:@"name"];
[newsDict setObject:@"12" forKey:@"age"];
[newsDict setObject:@"man" forKey:@"sex"];
写入plist文件
[newsDict writeToFile:plistPath atomically:YES];
二、读取plist文件
- 1、获取路径
用新建文件的方式常见的plist文件,获取其路径的方法如下:
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"newsModel" ofType:@"plist"];
代码方式创建的plist文件获取其路径的方式如下:
NSArray *pathArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path1 = [pathArray objectAtIndex:0];
NSString *myPath = [path1 stringByAppendingPathComponent:@"newsTest.plist"];
- 2、读取数据
文件是什么类型,就用什么类型的数据来接收
//newsModel.plist文件
NSMutableArray *data1 = [[NSMutableArray alloc] initWithContentsOfFile:filePath];
//newsTest.plist文件
NSMutableDictionary *data2 = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
数据输出如下:
数据输出三、添加数据
同样是先获取路径,注意获取路径的方式视情况而定:
//用新建文件的方式常见的plist文件,获取其路径
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"newsModel" ofType:@"plist"];
//代码方式创建的plist文件获取其路径
NSArray *pathArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path1 = [pathArray objectAtIndex:0];
NSString *myPath = [path1 stringByAppendingPathComponent:@"newsTest.plist"];
然后是取到数据:
//newsModel.plist文件
NSMutableArray *data1 = [[NSMutableArray alloc] initWithContentsOfFile:filePath];
//newsTest.plist文件
NSMutableDictionary *data2 = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
对数据进行操作,添加数据:
//新建一个字典,设置属性值
NSMutableDictionary *addData1 = [NSMutableDictionary dictionary];
[addData1 setObject:@"123" forKey:@"title"];
[addData1 setObject:@"pic.png" forKey:@"image"];
[addData1 setObject:@"wobushi" forKey:@"detail"];
//添加到数组中
[data1 addObject:addData1];
//写入文件
[data1 writeToFile:filePath atomically:YES];
//增加一个字段”job“,并设置属性值
[data2 setObject:@"writer" forKey:@"job"];
//写入文件
[data2 writeToFile:plistPath atomically:YES];
修改后的数据输出如下:
添加数据以上就是plist文件的常用操作,当然,还可以进行修改删除等操作,方法类似,这里就不做描述了。
网友评论
//用新建文件的方式常见的plist文件,获取其路径
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"newsModel" ofType:@"plist"];
//新建一个字典,设置属性值
NSMutableDictionary *addData1 = [NSMutableDictionary dictionary];
[addData1 setObject:@"123" forKey:@"title"];
[addData1 setObject:@"pic.png" forKey:@"image"];
[addData1 setObject:@"wobushi" forKey:@"detail"];
//添加到数组中
[data1 addObject:addData1];
//写入文件
[data1 writeToFile:filePath atomically:YES];
//取出plist文件
NSMutableArray *data1 = [[NSMutableArray alloc] initWithContentsOfFile:filePath];
我当时写的时候选的数组类型,所以用数组接收的,这一点情况不同可能会有区别
[[NSUserDefaultsstandardUserDefaults]removePersistentDomainForName:appDomain];
如果程序中做了这个操作会怎么样