沙盒由四种文件构成:
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;
NSString *str = [NSString stringWithContentsOfURL:(NSURL *) encoding:(NSStringEncoding) error:(NSError **)];
eg: 转化成NSData类型NSData *data = [NSData dataWithContentsOfFile:(NSString *)];
复杂类型对象的存储
将model类型的对象归档(序列化) 为NSData类型的对象, 然后将NSData类型对象存储
如果model在数组中, 想要存储数组, 也必须用复杂类型对象将数组转换成data, 然后进行存储
如果在归档的时候是数组, 那么反归档得到的也是数组