沙盒机制~简单的本地存储

沙盒机制

1.每个应用程序位于文件系统的严格限制部分

2.每个应用程序只能在为该程序创建的文件系统中读取文件

3.每个应用程序在iOS系统内都放在了统一的文件夹目录下


沙盒路径的位置:

1.通过Finder查找程序沙盒相对路径

    ~/Library/Application Support/iPhone Simulator

2.通过代码查找程序沙盒相对路径

    NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory      directory,NSSearchPathDomainMask domainMask,BOOL expandTilde);


简单对象写入文件


//获取存储路径
NSArray *path =  NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
//构造字符串文件的存储路径
NSString *str = [path firstObject];
str = [NSString stringWithFormat:@"%@%@",str,@"/text.txt"];
//初始化一个字符串
NSString *string = @"写入一个字符串";
//将字符串写入文件
[string writeToFile:str atomically:YES encoding:NSUTF8StringEncoding error:&error];
//读取文件
NSString *string = [[NSString alloc] initWithContentsOfFile:str encoding:NSUTF8StringEncoding error:&error];

//写入数组对象
NSArray *array = [NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5", nil];
[array writeToFile:str atomically:YES];

//读取数组
NSString *str = [NSString stringWithFormat:@"%@%@",[[self getPathOfDocuments] firstObject],@"/array.txt"]; 
NSArray *array = [[NSArray alloc] initWithContentsOfFile:str];

//写入字典
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"hehehe",@"1",@"hahaha",@"2",@"enenen",@"3", nil];
[dic writeToFile:str atomically:YES];

#pragma mark 读取字典
NSString *str = [NSString stringWithFormat:@"%@%@",[[self getPathOfDocuments] firstObject],@"/dic.txt"];
NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:str];
  
//写入data
NSString *string = @“啊啊啊啊哦,啊啊啊啊哦哎";
//将string转换为UTF8二进制编码格式
NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];//将string转换为UTF8二进制编码格式
[data writeToFile:str atomically:YES];//写入文件

//读取data
NSString *str = [NSString stringWithFormat:@"%@data",[[self getPathOfDocuments] firstObject]];
NSData *data = [NSData dataWithContentsOfFile:str];
//将data转换为字符串
NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

//轻量级存储
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@"不得不说" forKey:@"name"];
//同步存储(默认是异步)
[defaults synchronize];

//轻量级存储的获取
NSString *value = [[NSUserDefaults standardUserDefaults] objectForKey:@"name"];

//复杂类型对象(需要有自己的model,遵循NSCoding协议,实现两个方法)

@protocol NSCoding
(void)encodeWithCoder:(NSCoder *)aCoder;
(void)initWithCoder:(NSCoder *)aDecoder;
@end

//归档,将自己创建的model类对象转换为二进制格式,通过二进制格式进行存储
NSString *str= [NSString stringWithFormat:@"%@/model", [[self getPathOfDocuments] firstObject]];
Student *stu = [Student StudentWithName:@"张三" sex:@"男" age:22];
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:stu];
[data writeToFile:str atomically:YES];

//将归档后的二进制文件,解档为相对应的model类型对象
NSString *str = [NSString stringWithFormat:@"%@/model",[[self getPathOfDocuments] firstObject]];
NSData *data = [NSData dataWithContentsOfFile:str];
Student *stu = [NSKeyedUnarchiver unarchiveObjectWithData:data];

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值