一、相關(guān)知識
(?? 需要直接看代碼可跳到第二部分)
在ios中應(yīng)用的緩存數(shù)據(jù)只能保存在 沙盒 中具温。
沙盒 : 每個應(yīng)用程序自己的獨立的存儲空間。
沙盒中默認含有以下4個文件:
-
Documents
iTunes備份和恢復(fù)的時候,會包括此目錄。 -
Library
Library/Caches:存放緩存文件丹莲,應(yīng)用程序再次啟動過程中需要的信息。
Library/Preferences:包含應(yīng)用程序的偏好設(shè)置文件尸诽。 -
tmp
創(chuàng)建臨時文件的目錄圾笨,設(shè)備重啟時,文件會自動被清除逊谋。 -
應(yīng)用.app
應(yīng)用程序的程序包目錄,包含應(yīng)用程序的本身土铺。
以下是獲取對應(yīng)路徑的方式:
// 獲取到沙盒的根目錄
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
二胶滋、緩存數(shù)據(jù)代碼
這里以寫入和讀取plist為例:
/******** 寫入plist *********/
NSArray *path = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
// 寫入的文件路徑(在沙盒的cache路徑下)
NSString *indir = [[path lastObject] stringByAppendingString:@"/test.plist"];
// 生成數(shù)組(NSMutableArray可變數(shù)組板鬓,NASArray不可變數(shù)組)
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);