什么是沙盒机制?
每个应用程序位于文件系统的严格限制部分
每个应用程序只能在为该程序创建的文件系统中读取文件
每个应用程序在iOS系统内部都放在了统一的文件夹目录下面
沙盒的本质就是一个文件夹,名字是随机分配的
数据持久化
什么是数据持久化?
数据的永久存储
为什么要做数据持久化?:存储在内存中的数据,程序关闭,内存释放,数据丢失,这种数据是临时的,用户下次打开应用程序,还要重新联网去刷新数据,无疑增加了用户的负担
数据持久化的本质:数据保存成文件,存储到程序的沙盒中
沙盒默认情况下有三个目录文件夹documents,Library,tmp及应用的App文件,只可在相应的文件夹中进行操作
documents:一般用来存放应用中建立的文件,如数据库文件,或程序中浏览到的文件数据。如果进行备份会将此文件夹中的文件包括其中;
Library:存储应用的默认设置及状态信息;
Library/cache:用来存放缓存文件,此文件夹下数据在应用退出时不会删除。备份时不会包括此文件夹;
tmp:存放即时穿件的临时文件
获取沙盒目录路径的方法
NSHomeDirectory-->沙盒主路径
NSDocumentDirectory-->Documents文件夹
NSLibraryDirectory-->Library文件夹
NSCachesDirectory-->Caches文件夹
NSTemporaryDirectory()-->tmp文件夹
#pragma mark---
获取沙盒下的文件目录
// 1.获取沙盒中Documents这个文件夹的路径
NSString
* documentsPath = [
NSSearchPathForDirectoriesInDomains
(
NSDocumentDirectory
,
NSUserDomainMask
,
YES
)
objectAtIndex
:
0
];
NSLog(@"%@",documentsPath);
// 第一个参数指定了搜索的路径名称,NSDocumentDirectory表示是在Documents中寻找.NSCacheDirectory的话就是在cache文件中寻找.第二个参数限定了文件的检索范围只在沙盒内部.其意义为用户电脑主目录.也可以修改为网络主机等.最后一个参数决定了是否展开波浪线符号.展开后才是完整路径,这个布尔值一直为YES.
// 该方法返回值为一个数组,在iPhone中由于只有一个唯一路径(相对OC而言),所以直接取数组第一个元素即可.
#pragma mark-----对简单对象进行持久化
// (1)将字符串写入文件
NSString * string = @"I love you very much!";
// 1.拼接存储路径
NSString * strPath = [documentsPath stringByAppendingPathComponent:@"string.txt"];
NSLog(@"%@",strPath);
// 2.将字符串写入文件
// (1)将字符串写入文件
NSString * string = @"I love you very much!";
// 1.拼接存储路径
NSString * strPath = [documentsPath stringByAppendingPathComponent:@"string.txt"];
NSLog(@"%@",strPath);
// 2.将字符串写入文件