在做iOS开发时,经常用到到plist文件, 那plist文件是什么呢? 它全名是:Property List,属性列表文件,它是一种用来存储串行化后的对象的文件。属性列表文件的扩展名为.plist ,因此通常被称为 plist文件,文件是xml格式的.属性列表可以使用的类型如下:
对于只需要保存简单数据的应用而言,使用属性列表是一个不错的选择,NSArray,NSDictionary对象提供了- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag方法,该方法可以把NSArray,NSDictionary包含的数据写入属性文件.当恢复这些数据的时候,只要调用NSArray,NSDictionary的xxxWithContentsOfFile:(NSString *)path方法即可.
但是要注意,如果对象是NSString、NSDictionary、NSArray、NSData、NSNumber、NSValue等类型,就可以使用writeToFile:atomically:方法直接将对象写到属性列表文件中.这也意味着,如果NSArray,NSDictionary中保存了其他类型的对象,或者使用了程序员自定义的实例,将不能够直接调用NSArray,NSDictionary的- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag方法执行保存.如果程序需要持久化保存自定义类的实例,则可以考虑选择对象归档的方法进行保存!
其实我们经常使用的NSUserDefaults就是一个属性列表文件,它提供了一个与默认系统进行交互的编程接口,用户可以在程序运行的时候进行读写数据操作,从而实现持久化。
属性列表保存文件数据
//1.获得文件路径
NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;
NSString *fileName = [path stringByAppendingPathComponent:@"123.plist"];
NSLog(@"%@",fileName);在这里可以根据路径找到对应的 plist 文件.
//2.存储 存储时使用writeToFile: atomically:方法。 其中atomically表示是否需要先写入一个辅助文件,再把辅助文件拷贝到目标文件地址。这是更安全的写入文件方法,一般都写YES。
NSArray *array = @[@"123", @"456", @"789"];
[array writeToFile:fileName atomically:YES];
// 3.读取
NSArray *result = [NSArray arrayWithContentsOfFile:fileName];
NSLog(@"%@", result);
手动添加plist文件
操作很简单,New File - Resource - Property List ,输入文件名称即可
注意:plist文件的跟类型只能够是选择Array或者Dictionary
其子类key可以选择多种类型,为plist添加数据只需要点击添加“+”按钮即可,然后选择对应的类型,对于Array或者Dictionary可以继续添加数据。
我们还可以查看plist文件的XML格式,点击文件,右键选择“Open As -> Source Code”即可查看。
源码样式如下:
一旦我们创建好自己的plist文件并且添加完数据,就可以在项目中获取该文件,得到文件中的数据。
// 获取文件路径
NSString * filePath = [[NSBundle mainBundle] pathForResource:@"PropertyList" ofType:@"plist"];
// 获取数据
NSDictionary * dic = [NSDictionary dictionaryWithContentsOfFile:filePath];
NSLog(@"%@",dic);
打印结果:
{
Arr = (
value1,
value2,
value3
);
Student = {
name = Jack;
};
}
对于固定显示的内容,那么使用plist文件还是很方便的,不需要反复写代码,并且可以进行可视化操作,添加,删除数据非常方便。对于更多详情的内容可以看官方文档,里面介绍的非常好。