您的位置:首页 > 其它

沙盒路径下存储和读取数据 缓存文件、偏好设置文件、plist文件

2015-05-31 21:17 323 查看
1、plist存储
// 获取应用文件夹路径
NSString *homePath = NSHomeDirectory();
//获取document文件夹的路径
//函数的作用:在某个范围内搜索一个文件夹的路径
//directory:获取哪个文件夹
//NSUserDomainMask:在用户的范围内查找
//expandTilde:YES:展开 。No,不展开,~会把沙盒路径替换
NSString *docPath = NSSeachPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES)[0];//文件所在的文件夹路径
//拼接上文件
NSString *filePath = [docPath stringByAppendingPathComponent:@“arr.plist”];
//创建数组,将数组写入文件
NSArray *arr = @[@“12”,@“34”];
[arr writeToFile:filePath atomically:YES];
//从文件中读取出数组
NSArray *arr = [NSArray arrayWithContentsOfFile:filePAth];
2、偏好设置存储
//
偏好设置:[NSUserDefaults standardUserDefaults]专门用来偏好设置存储

//
偏好设置:快速进行一些键值对的存储,底层封装方式:就是包装了一个字典

//
偏好设置:不需要关心文件名
//
偏好设置的注意点:ios8之前,通常我们需要做一个操作,同步:把缓存的数据同步到硬盘
//写入到偏好设置
[[NSUserDefaults standardUserDefaults] setObject:@“xiaoming” forKey:@“name”];
//ios8之前一定要做同步:把缓存的数据及时同步到硬盘
[[NSUserDefaults standardUserDefaults]synchronize];

//读取偏好设置
NSString *name = [[NSUserDefaults standardUsersDefaults] objectForKey:@“name”];

3、自定义对象归档
遵守NSCoding协议
归档的时候encodeWithCoder方法重写
解档的时候initWithCoder方法重写
-(void)encodeWithCoder:(NSCoder *)aCoder
{
[aCoder encodeObject:_name forKey :@“name”];
[aCoder encodeObject:_age forKey:@“age”];
}

解档文件
-(id)initWithCoder:(NSCoder *)aDecoder
{
//如果父类没有遵守<NSCoding>协议,就不需要调用InitWithCoder
if(self = [super init])
{
_name = [aDecoder decodeObjectForKey:@“name”];
_age = [aDecoder decodeObjectForKey:@“age”];
}
return self;
}
//归档和解档的使用
p.name = @“xiom”;
p.age = 10;
//获取文件全路径
NSString *cachePath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES)[0];
//拼接文件名
NSString *filePath = [cachePath stringByAppendingPathComponent:@“person.data”];
//一定对象如果需要归档,必须要遵守<NSCoding>实现encodeWithCoder
//归档
[NSKeyedArchive archiveRootObject:p toFile:filePath];

//解档
Person *p = [NSKeyedUnarchiver unachiveObjectWithFile:filePath];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: