iOS開發(fā)的過程中,數(shù)據(jù)存儲是必不可少的一個模塊,了解存儲就得先知道沙盒
常見的幾種存儲方式
1.plist文件(屬性列表)
2.NSKeyedArchiver(歸檔)
3.Preference(偏好設置)
4.SQLite3
5.Core Date
在了解他們之前熬丧,就得先說下沙盒墨榄。
沙盒機制
-每個應用程序位于文件系統(tǒng)的嚴格限制部分
-每個應用程序只能在為該程序創(chuàng)建的文件系統(tǒng)中讀取文件
-每個應用程序在iOS系統(tǒng)內都放在了統(tǒng)一的文件夾目錄下
-沙盒的本質就是一個文件夾锹雏,名字是隨機分配的瞳步,按照UUID標示符標記分配的
沙盒路徑的位置
1、通過Finder查找程序沙盒相對路徑
~/Library/Application Support/iPhone Simulator
2塔沃、通過代碼查找程序的沙盒路徑
FOUNDATION_EXPORT NSArray<NSString *> *NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory directory, NSSearchPathDomainMask domainMask, BOOL expandTilde);
/**
* 沙盒路徑
*
* @param NSDocumentDirectory 制定指定的目錄名稱
* @param NSUserDomainMask 制定制定的作用域
* @param YES 是否返回完整路徑
*
* @return Documents文件夾
*/
NSArray *filepaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
//數(shù)據(jù)持久化常用文件夾Documents
NSLog(@"Documents = %@",filepaths);
//數(shù)據(jù)持久化常用文件夾Tem
NSString *temPath = NSTemporaryDirectory();
NSLog(@"temp = %@",temPath);
//應用程序在安裝完成之后會在對應的沙盒中產生一個.app文件(與之對應的類是NSBundle),工程中的資源會保存在這個.app文件中蝠引,此.app文件是只讀的,通常稱之為應用程序包
NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"image" ofType:@"png"];
文件存儲的相對目錄
//獲取所有的Docments文件夾
NSArray *filepaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
//將最后一個Documents文件夾路徑作為文件的存儲目錄
NSString *docPath = filepaths.lastObject;```
####沙盒的基本構成
Document:保存應用運行時生成的```需要持久化的數(shù)據(jù)```蛀柴,iTunes同步設備時```會備份```該目錄螃概;
Library/Caches:保存應用運行時生成的```需要持久化的數(shù)據(jù)```,iTunes同步設備時```不會備份```該目錄鸽疾;
Library/Preferences:保存應用的所有```偏好設置```吊洼,iOS的setting(設置)應用會在該目錄中查找應用的設置信息。iTunes同步```會備份該目錄```.
tmp:保存應用運行時所需的```臨時數(shù)據(jù)```制肮,使用完畢后再將相應文件從該目錄刪除融蹂,應用沒有運行時,系統(tǒng)也可能會清除該目錄下的文件弄企,itunes同步```不會備份```該目錄。
ps:本來是想寫一篇關于數(shù)據(jù)存儲的区拳,寫著寫著發(fā)現(xiàn)自己果然寫作能力匱乏...哎....退而求其次寫了這篇沙盒拘领,好歹也是寫了點東西??,睡覺了??