沙盒

沙盒

什么是数据持久化?数据的永久存储 为什么要做数据持久化:数据在内存中的数据,程序关闭,内存释放,数据丢失, 这种数据是临时的 数据持久化的本质:数据保存成文件,储存到程序的沙盒中
沙河机制

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

沙盒路径的位置 1.通过Finder查找程序沙盒相对路径 沙盒构成

Document 存储用户数据,需要备份的信息 Library/Caches 存储缓存文件,程序专用的支持文件 Library/Preferences 存数应用程序的偏好设置文件

.app 程序包(iOS8时.app不存储在沙盒中,有单独的文件夹存储所有程序的 app包)
tmp 存储临时文件.比如:下载的zip包,解压后的在删除

通过代码查找程序沙盒相对路径

NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory directory,NSSearchPathDomainMask domainMask,BOOL expandTilde);

获取沙河目录路径的方法
NSHomeDirectory ———————沙盒主路径 NSDocumentDirectory————————Documents文件夹 NSLibraryDirectory —————————Library文件夹 NSCachesDirectory————————Caches文件夹 NSTemporaryDirectory()———————tmp文件夹

简单写入文件
文件存储的相对目录

//获取所有的documents文文件夹 NSArray *documentList =

NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,
YES);

//将最后的一一个documents文文件夹路径作为文文件的存储⺫目目录 NSString *documentPath = documentList.lastObject;

字符串对象写入入文文件
//构造字符串文文件的存储路径NSString *strPath = [documentPath

stringByAppendingString:@"/text.txt"]; //构造字符串对象NSString *foo_str = @“this is a test”;

//通过将writeToFile:atomically:encoding:error:方方法发送给字符串对象完成 字符串存储到 文文件内的功能

[foo_str writeToFile:strPath atomically:YES encoding:NSUTF8StringEncoding error:nil];

数组对象写入入文文件
//构造数组plist文文件的存储路径NSString *arrayPath = [documentPath

stringByAppendingString:@“/ array.plist”];

//构造数组对象NSArray *foo_array = @[@“cyy”,@“yhy”,@“xdp”,@“lmz”,@“zdh”,@“snn”];

//通过将writeToFile:atomically:方方法发送给数组对象完成数组存储到文文 件内的功能 [foo_array writeToFile:arrayPath atomically:YES];

字典对象写入入文文件
//构造字典plist文文件的存储路径NSString *dicPath = [documentPath

stringByAppendingString:@“/dic.plist”];

//构造数组对象 NSDictionary *foo_dic =

@{@“jz”:@“cyy”,@“jzzl”:@“yhy”,@“js”:@“xdp”,@“jzzlzl”:@“lmz”,@“jfz”:@“zdh ”,@“tq”:@“snn”};

//通过将writeToFile:atomically:方方法发送给字典对象完成数组存储到文文 件内的功能 [foo_dic writeToFile:dicPath atomically:YES];

二二进制对象写入入文文件
//构造二二进制文文件的存储路径NSString *dataPath = [documentPath

stringByAppendingString:@“/ data.da”];

//通过将writeToFile:atomically:方方法发送给二二进制对象完成二 二进制存储到文文 件内的功能

[foo_data writeToFile:dataPath atomically:YES];

注:二二进制对象可能存储的是图像、字符串等等。 

原文地址:https://www.cnblogs.com/lidongxiao/p/4949989.html