沙盒

iOS开发的过程中,数据存储是必不可少的一个模块,了解存储就得先知道沙盒

常见的几种存储方式

1.plist文件(属性列表)
2.NSKeyedArchiver(归档)
3.Preference(偏好设置)
4.SQLite3
5.Core Date
在了解他们之前,就得先说下沙盒。

沙盒机制

-每个应用程序位于文件系统的严格限制部分
-每个应用程序只能在为该程序创建的文件系统中读取文件
-每个应用程序在iOS系统内都放在了统一的文件夹目录下
-沙盒的本质就是一个文件夹,名字是随机分配的,按照UUID标示符标记分配的

沙盒路径的位置

1、通过Finder查找程序沙盒相对路径
~/Library/Application Support/iPhone Simulator
2、通过代码查找程序的沙盒路径

FOUNDATION_EXPORT NSArray *NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory directory, NSSearchPathDomainMask domainMask, BOOL expandTilde);
 /**
 *  沙盒路径
 *
 *  @param NSDocumentDirectory 制定指定的目录名称
 *  @param NSUserDomainMask    制定制定的作用域
 *  @param YES                 是否返回完整路径
 *
 *  @return Documents文件夹
 */
NSArray *filepaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
//数据持久化常用文件夹Documents
NSLog(@"Documents = %@",filepaths);
//数据持久化常用文件夹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:保存应用运行时生成的```需要持久化的数据```,iTunes同步设备时```会备份```该目录;
Library/Caches:保存应用运行时生成的```需要持久化的数据```,iTunes同步设备时```不会备份```该目录;
Library/Preferences:保存应用的所有```偏好设置```,iOS的setting(设置)应用会在该目录中查找应用的设置信息。iTunes同步```会备份该目录```.
tmp:保存应用运行时所需的```临时数据```,使用完毕后再将相应文件从该目录删除,应用没有运行时,系统也可能会清除该目录下的文件,itunes同步```不会备份```该目录。

ps:本来是想写一篇关于数据存储的,写着写着发现自己果然写作能力匮乏...哎....退而求其次写了这篇沙盒,好歹也是写了点东西,睡觉了

你可能感兴趣的:(沙盒)