当一些数据需要保存到手机上方便下次复用,就需要用到系统这三种的存储方法,各有自己的长处,下面让我们了解各种方法
----plist存储
//数据一部都是存取字典和数组,这时我们就可以使用plist文件存储,然后把它放到沙盒当中,
//当然plist在平台是没有的,只有iOS当中才有,他是iOS特有的存储方法
-(void)save{
//第一步:获取沙盒
//这里我们需要用到一个文件搜索方法
//在某个范围内搜索文件夹的路径.
//参数一: directory:获取哪个文件夹
//参数二:domainMask:在哪个路径下搜索
//参数三:expandTilde:是否展开路径.
NSArray*array = NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES);
//指定搜索的是Cache目录,所以结果只有一个,取出第一个就是沙盒路径
NSString*cachePath = array[0];
//拼接文件路径
NSString*filePathName = [cachePathstringByAppendingPathComponent:@"agePlist.plist"];
//剩下的就是怎么生成一个plist文件,然后放到沙盒里
//其实字典中,已经提供了一种生成plist方法,数组同理
//先生成一个字典
NSDictionary*dict =@{@"age":@18,@"name":@"gaowei"};
//然后直接写入的沙盒路径中[自动转换为plist文件]
[dictwriteToFile:filePathNameatomically:YES];
}
//读取数据
-(void)read{
//继续使用文件搜索的方法,搜索沙盒地址[因为结果可能多个,所以是一个数组]
NSArray *array = NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES)
//Cache目录里只有一个文件,只需取第一个
NSString*cachePath = array[0];
//拼接地址 [地址为:沙盒路径/保存的plist名称.plist]
NSString*filePathName = [cachePath stringByAppendingPathComponent:@"agePlist.plist"];
//读取plist文件的
}
================== 我是一个华丽分割线 ==================
---- 归档
//保存数据
-(void)save{
//归档一般都是保存自定义对象的时候,使用归档是因为plist文件不能够保存自定义对象
//如果你想把自定义对象保存在字典中,然后保存到plist也是不会成功生成plist文件
Persion *persion = [[Persion allco] init];
persion.name = @"张三"
persion.age = 18
//获得沙盒临时目录[只有程序被删除,才一同删除,不然一直存在]
NSString*tempPath =NSTemporaryDirectory();
}
//读取数据
- (Void)reader {
//获取沙盒临时目录[只有程序被删除,才一同删除,不然一直存在]
NSString *tempPath = NSTemporaryDirectouy();
NSString *filePath = [tempPath stringByAppendingPathComponent:@"persion.data"]'
//NSKeyedUnarchiver会调用initWithCoder方法,来让你告诉他去获取这个对象的哪些属性,所以我们在保存的对象当中实现initWithCoder代理方法.
persion *persion = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
}
//归档最重要的步骤
->Persion.h
@property(nonatomic,assign)int age;
->Persion.m
[encode encodeObject:self.nameforKey:@"name"];
[encode encodeInt32:self.ageforKey:@"age"];
return self;