基础篇---本地存储

来源:互联网 发布:硕鼠for mac 编辑:程序博客网 时间:2024/04/29 14:32

沙盒由四种文件构成:

1. Bundle: 里面存储代码, 资源文件, 配置文件

        特性: (1)  其内容在程序运行期间为只读

 (2)  在开发期间可以修改

2. Document :

特性: (1) 大小的限制  

 (2) 数据库

 (3) 从应用程序安装到结束存储在此

3. Library: Caches(缓存), Preference(配置)

Caches特性: (1) 图片缓存

     (2) 网络数据存储

Preference: NSUserDefault

4. tmp (临时行文件夹):

特性: 数据用完就删

数据存储:

简单数据 : NSString, NSDictionary, NSArray, NSData

复杂数据 :系统提供之外的类型(也就是model)

步骤:

1. 获取路径, 但此时只能找到文件夹

NSArray *array = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory directory, NSSearchPathDomainMask domainMask, BOOL expandTilde);

2. 因为不能够确定path中有几个对象, 所以要么firstObject, 要么lastObject

NSString *path = [array firstObject];

3. 将路径进行拼接

path = [NSString stringWithFormat:@"%@/a", path];

4. 将路径写入文件中

- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile encoding:(NSStringEncoding)enc error:(NSError **)error;

5. 最后需要什么类型就转化成什么类型
eg: 转化成字符串类型

NSString *str = [NSString stringWithContentsOfURL:(NSURL *) encoding:(NSStringEncoding) error:(NSError **)];

eg: 转化成NSData类型

NSData *data = [NSData dataWithContentsOfFile:(NSString *)];

复杂类型对象的存储

model类型的对象归档(序列化)为NSData类型的对象,然后将NSData类型对象存储

如果model在数组中,想要存储数组, 也必须用复杂类型对象将数组转换成data,然后进行存储

复杂类型对象: data转换为model

如果在归档的时候是数组, 那么反归档得到的也是数组






0 0