ios数据持久化 - plist文件(属性列表)

******  数据持久化常用的五种方式  ******

1.plist文件(属性列表)

2.preference(偏好设置)

3.NSKeyedArchiver(归档)

4.SQLite 3

5.CoreData

*---- 沙盒路径下的三个文件(Documents/Library/tmp) -----*

/**** "应用程序包": 这里面存放的是应用程序的源文件,包括资源文件和可执行文件 ****/

NSString *path = [[NSBundle mainBundle] bundlePath];

/*** Documents: 最常用的目录,iTunes同步该应用时会同步此文件夹中的内容,适合存储重要数据 ***/

NSString *Documentspath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;

/*** Library/Caches: iTunes不会同步此文件夹,适合存储体积大,不需要备份的非重要数据 ***/

/** Library/Preferences: iTunes同步该应用时会同步此文件夹中的内容,通常保存应用的设置信息 **/

NSString *Cachespath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject;

/** tmp: iTunes不会同步此文件夹,系统可能在应用没运行时就删除该目录下的文件,所以此目录适合保存应用中的一些临时文件,用完就删除 **/

NSString *Preferencespath = NSTemporaryDirectory();

1.plist文件(属性列表)

****** 手动新建一个 Property List 文件 ******

ios数据持久化 - plist文件(属性列表)_第1张图片

可以手动添加各类数据

ios数据持久化 - plist文件(属性列表)_第2张图片

NSString *plistPath = [[NSBundle mainBundle]pathForResource:@"Property List" ofType:@"plist"];

NSMutableDictionary *dataDic = [[NSMutableDictionary alloc]initWithContentsOfFile:plistPath];

NSLog(@"%@",dataDic);//直接打印刚刚写入的数据

******  代码创建plist文件 ******

//获取路径对象

NSArray *pathArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *path = [pathArray objectAtIndex:0];

//获取文件的完整路径

NSString *filePatch = [path stringByAppendingPathComponent:@"column.plist"];

NSLog(@"%@",filePatch);//打印创建好的plist文件路径

//写入数据到plist文件

NSMutableDictionary *dic1 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"小小虎",@"name",@"5",@"age",@"boy",@"sex",nil];

NSMutableDictionary *dic2 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"小小兮",@"name",@"6",@"age",@"girl",@"sex",nil];

//将上面2个小字典保存到大字典里面

NSMutableDictionary *dataDic = [NSMutableDictionary dictionary];

[dataDic setObject:dic1 forKey:@"一年级"];

[dataDic setObject:dic2 forKey:@"二年级"];

//写入plist里面

[dataDic writeToFile:filePatch atomically:YES];

//读取plist文件的内容

NSMutableDictionary *dataDictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:filePatch];

NSLog(@"---plist一开始保存时候的内容---%@",dataDictionary);

******  plist文件的增删改查 ******

//修改字典里面的内容,先按照结构取到你想修改内容的小字典

NSMutableDictionary *dd = [dataDictionary objectForKey:@"一年级"];

[dd setObject:@"111111" forKey:@"name"];    //修改

[dd setObject:@"222222" forKey:@"content"]; //增加

[dd removeObjectForKey:@"age"];            //删除

//注意bool值的修改与一般值修改不一样,是需要nsnumber作为中间转换

//修改成功以后,将这个小字典重新添加到大字典里面

[dataDictionary setObject:dd forKey:@"一年级"];

[dataDictionary writeToFile:filePatch atomically:YES];

NSLog(@"---plist做过操作之后的字典里面内容---%@",dataDictionary);

****** 清除plist文件 ******

//清除plist文件,可以根据我上面讲的方式进去本地查看plist文件是否被清除

NSFileManager *fileMger = [NSFileManager defaultManager];

NSString *xiaoXiPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0]stringByAppendingPathComponent:@"column.plist"];

//如果文件路径存在的话

BOOL bRet = [fileMger fileExistsAtPath:xiaoXiPath];

NSLog(@"清除plist文件=%d",bRet);

if (bRet) {

NSError *err;

BOOL isDelete = [fileMger removeItemAtPath:xiaoXiPath error:&err];

//已清除,打印的文件路径打不到了 - xiaoXiPath

NSLog(@"清除plist文件的路径%@=%d",xiaoXiPath,isDelete);

}

你可能感兴趣的:(ios数据持久化 - plist文件(属性列表))