一、相关知识
(⚠️ 需要直接看代码可跳到第二部分)
在ios中应用的缓存数据只能保存在 沙盒 中。
沙盒 : 每个应用程序自己的独立的存储空间。
沙盒中默认含有以下4个文件:
-
Documents
iTunes备份和恢复的时候,会包括此目录。 -
Library
Library/Caches:存放缓存文件,应用程序再次启动过程中需要的信息。
Library/Preferences:包含应用程序的偏好设置文件。 -
tmp
创建临时文件的目录,设备重启时,文件会自动被清除。 -
应用.app
应用程序的程序包目录,包含应用程序的本身。
以下是获取对应路径的方式:
// 获取到沙盒的根目录
NSString *homePath = NSHomeDirectory();
// 获取Documents目录
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSString *docPath = [paths lastObject];
// 获取Library中的Cache
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask, YES);
NSString *docPath = [paths lastObject];
j// 获取tmp路径
NSString *temp = NSTemporaryDirectory();
// 获取程序包文件路径
[[NSBundle mainBundle] resourcePath
二、缓存数据代码
这里以写入和读取plist为例:
/******** 写入plist *********/
NSArray *path = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
// 写入的文件路径(在沙盒的cache路径下)
NSString *indir = [[path lastObject] stringByAppendingString:@"/test.plist"];
// 生成数组(NSMutableArray可变数组,NASArray不可变数组)
NSMutableArray *writeData=[[NSMutableArray alloc] init];
NSArray *arr = @[@"apple", @"banana", @"pear"];
[writeData addObjectsFromArray:arr];
// 写入文件
[writeData writeToFile:indir atomically:YES];
/********* 读取plist *********/
NSArray *readData=[NSArray arrayWithContentsOfFile:indir];
NSLog(@"读取plist:%@",readData);
网友评论