應(yīng)用程序的沙盒:
- 每個應(yīng)用程序之間相互隔離的
- 每個應(yīng)用程序只能訪問自己本地的目錄文件癌佩,不能訪問其他app的目錄(越獄除外)
- 為每個應(yīng)用程序構(gòu)建了自己的運行空間
- 每個應(yīng)用程序有自己的緩存和文檔
沙盒目錄:
- 應(yīng)用程序的目錄
- Documents目錄:持久化文檔數(shù)據(jù)
- Library目錄:緩存數(shù)據(jù)(caches) 持久化(Preferences)
- Tmp目錄
// 獲取app目錄
NSString * appPath = [[NSBundle mainBundle] bundlePath];
NSLog(@"appPath:%@",appPath);
// 獲取數(shù)據(jù)的home目錄
NSString * homePath = NSHomeDirectory();
NSLog(@"homePath:%@",homePath);
// 獲取documents目錄 第一個參數(shù)表面是documents目錄 第二個參數(shù)是iOS上的選項 第三個參數(shù) 是否展開
NSString * docPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
NSLog(@"docPath:%@",docPath);
// docPath = [homePath stringByAppendingPathComponent:@"Documents"];
// 獲取library目錄
NSString * libPath = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES)[0];
NSLog(@"libPath:%@",libPath);
// 獲取caches目錄
NSString * cachesPath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];
NSLog(@"cachesPath:%@",cachesPath);
// tmp目錄
NSString * tmpPath = NSTemporaryDirectory();
NSLog(@"tmpPath:%@",tmpPath);
NSUserDefaults: 單例類,在整個應(yīng)用程序中只有一個,本質(zhì)是應(yīng)用程序特定目錄下的一個plist文件
一般用于數(shù)據(jù)的持久化存儲,存儲數(shù)據(jù)量小的數(shù)據(jù)(設(shè)置 用戶數(shù)據(jù)等等)
在整個應(yīng)用程序的生命周期都是存在的
一般用于存儲基本數(shù)據(jù)類型:NSString NSSData NSNumber Boolean NSArray NSDictionary容器對象中也必須是以上基本類型
1.寫入到沙盒
// 類方法獲取單例對象
NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults];
// 保存BOOL值
[userDefaults setBool:<span class="s1" style="font-family: Arial, Helvetica, sans-serif;">YES</span><span style="font-family: Arial, Helvetica, sans-serif;"> forKey:@"kState"];</span>
// 將數(shù)據(jù)立即同步寫入到文件中
[userDefaults synchronize];
2.從沙盒中讀取
NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults];
BOOL yes = [userDefaults boolForKey:@"kState"];