数据本地存储的本质其实就是把数据保存成文件, 存储到程序的沙盒中.
IOS中的沙盒机制是一种安全机制
沙盒的本质 其实也是文件夹
通常沙盒中包含四个文件夹Bundle, Document, Library, tmp
1.Bundle
Bundle里面存放的是 代码, 资源文件 和配置文件.
注:内容在程序运行期间为只读,不能进行任何修改.
2.Document
Document有大小限制, 一般只存放数据库
3.Library
Library 分为俩个文件夹
caches和 preference
caches 里一般存放图片缓存, 网络数据缓存
preference 里一般存放 NSUserDfault里的东西
4.tmp
临时性文件夹, 数据用完就删
数据存储也分为简单数据存储和复杂数据存储
一.简单数据存储 :NSString NSDictionary NSArray NSData
//存入数据
//首先需要知道所存储的路径,
NSArray *array = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDoMainMask, YES);
NSString *path = [array lastObject];
NSString *fielPath = [NSString stringWithFormat:@"%@/mine",path];
NSString *str = @"abc";
之后将数据存储到指定路径
[str writeToFiel:fielPath atomically:YES encoding:NSUTF8String error:nil];
//读取数据
//同样需要获得存储路径
NSArray *array = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDoMainMask, YES);
NSString *path = [array lastObject];
NSString *fielPath = [NSString stringWithFormat:@"%@/mine",path];
NSData *data = [NSData dataWithContentsOfFiel:fielPath];NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8String];
二 .复杂数据存储 :model
//存入数据
//需要先将model类的对象归档为 NSData类型的对象,然后将NSData进行存储
#import "MyModel"
MyModel *model = [[MyModel alloc] init];
NSData *data = [NSKeyedArchiver archivedDateWithRootObject:model];
NSArray *array = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDoMainMask, YES);
NSString *path = [array lastObject];
NSString *fielPath = [NSString stringWithFormat:@"%@/mine",path];
[data writeToFiel:fielPath atomically:YES encoding:NSUTF8String error:nil];
//读取数据
NSArray *array = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDoMainMask, YES);
NSString *path = [array lastObject];
NSString *fielPath = [NSString stringWithFormat:@"%@/mine",path];
NSData *data = [NSData dataWithContentsOfFiel:fielPath];MyModel *model = [NSKeyedUnarchiver unarchiveObjectWithData:data];