项目中需要保存用户信息到本地、从本地读取用户信息,就要用到在工程沙盒中对plist文件读写操作。在网上查找的相关资料,总结了下与大家分享:
一、plist文件简介
plist全名是:Property List,属性列表文件,它是一种用来存储串行化后的对象的文件。属性列表文件的扩展名为.plist ,因此通常被称为 plist文件。文件是xml格式的。
Plist文件通常用于储存用户设置,也可以用于存储捆绑的信息。(具体参考:http://www.voidcn.com/article/p-ojdaczub-wz.html)
二、plist文件保存的位置:
1.工程沙盒里(就是程序用户Document文件夹下,以读取文件,写入文件方式)
2.工程自身里(就是在工程里手动创建一个如.plist文件,把固定的内容写入,这个需要人工手动写入)
三、工程沙盒中plist文件的简单读写操作代码:
以一个简单的例子,熟悉plist的简单操作吧。
ViewController.h的代码为:
#import
@interface ViewController : UIViewController
@property (nonatomic, strong) NSMutableDictionary *basicInfos;
@property (nonatomic, strong) NSMutableDictionary *detailInfos;
- (IBAction)readData:(id)sender;
- (IBAction)writeData:(id)sender;
- (NSString *)applicationDocumentsPath;
- (void)writeDataToPlist;
- (void)readDataFromPlist;
@end ViewController.m的代码为:
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
NSMutableDictionary *dictionary1 = [[NSMutableDictionary alloc] init];
[dictionary1 setObject:@"Test" forKey:@"userName"];
[dictionary1 setObject:@"male" forKey:@"gender"];
self.basicInfos = dictionary1;
NSMutableDictionary *dictionary2 = [[NSMutableDictionary alloc] init];
[dictionary2 setObject:@"China" forKey:@"address"];
self.detailInfos = dictionary2;
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)readData:(id)sender {
[self readDataFromPlist];
}
- (IBAction)writeData:(id)sender {
[self writeDataToPlist];
}
- (NSString *)applicationDocumentsPath
{
/*获取项目下Document(沙盒)的路径*/
//DocumentDirectory表示搜索的是Documents目录,NSUserDomainMask,表示搜索范围紧在应用程序沙盒(Home目录)内,最后一个bool值表示是否转换为实际路径。满足条件的路径会被放在这个数组里面。
NSArray *pathArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
//取得第一个Documents文件夹的路径
NSString *path = [pathArray objectAtIndex:0];
//把test.plist文件加入
NSString *filePath = [path stringByAppendingPathComponent:@"test.plist"];
// NSLog(@"