iOS-沙盒
2015-09-10 22:14
246 查看
iOS的沙盒(sandbox) 机制:是一种安全体系,iOS应用程序只能对自己创建的应用进行读取文件,这个独立 封闭 安全 的空间 就是咱们说的沙盒 。它里面一般存放着你的程序所需要的文件,数据持久化的一些文件(Plist。sqkite…)音视频,图片以及其他的资源文件。
每一个程序只有一个沙盒,沙盒里面有三个文件夹
1.Documents 目录下的内容 会被同步到另一台设备上 可以放 媒体资源 文本资源
2.Library 可以把缓存的内容放到Library/Caches里面
3.tmp 创建临时文件的目录 当我们的设备重启时,文件会被自动清除
1、获取根目录的方式
2、获得Documents 目录的方式
3、Library 目录;
4、Library 目录;下得Caches
5、零时目录tmp目录
归档 :NSKeyedArchiver
解归档: NSKeyedUnarchiver
归档又叫序列化(coding)
归档之后的文件 会被加密
可以归档的文件 数据 任何数据(直接归档一个类实例化的对象 数组 字典 字符串 文本 图片。。。。)
1、归档 步骤
//1.归档路径 需要归档的数据
//2.归档。解归档
1)、
2)、拼接归档文件的路径
3)、归档
2、解归档
//1.解归档的文件路径
//2.解归档
1)、
2)、
第二种归档方式
NSData 二进制数据的类
//1.归档文件的路径 准备归档的数据
//2.写一个可变的NSMutableData 通过归档的类 让Data准备写入到文件
//3.开始(归档)编码
//4.结束编码,或则归档 把Data数据写入到文件
1)、归档文件的路径 准备归档的数据
2)、写一个可变的NSMutableData 通过归档的类 让Data准备写入到文件
3)、.开始(归档)编码(编码的key和解码时候的key一定要统一)
4)、结束编码,或则归档 把Data数据写入到文件
将数据写入 (先全部写入零时文件,在写入目标文件) atomically如果设置成yes在写入数据时,如果出现意外情况(用户突然强制退出了,或则断电了。。。)会把写入到零时文件的内容清掉 不再写入目标文件 如果atomically如果设置成是NO,不管数据是否完整,都会直接写入到目标文件
2、解归档
//1.文件路径
//2.读取文件里面Data数据
//3.通过解归档对象 读取Data数据 准备解档
//4.解归档数据
1)文件路径
2)、读取文件里面Data数据
3)、通过解归档对象 读取Data数据 准备解档
4)、解归档数据(又叫做解码)
要想归档 自定义类的对象
//1遵守归档协议NSCoding
//2实现归档协议里面的方法
//3逐一对 自定义类里面的属性 进行了 编码和解码 这时候 这个对象 就具备了 归档 解归档的功能
// 开始归档 解归档
1)、要归档文件的路径 要归档的数据
2)、解归档
每一个程序只有一个沙盒,沙盒里面有三个文件夹
1.Documents 目录下的内容 会被同步到另一台设备上 可以放 媒体资源 文本资源
2.Library 可以把缓存的内容放到Library/Caches里面
3.tmp 创建临时文件的目录 当我们的设备重启时,文件会被自动清除
1、获取根目录的方式
NSString *homePath = NSHomeDirectory(); NSLog(@"%@",homePath)
2、获得Documents 目录的方式
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *DocumentPath = [paths firstObject]; NSLog(@"%@",DocumentPath);
3、Library 目录;
NSArray *path2 = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES); NSString *library = [path2 firstObject]; NSLog(@"%@",library);
4、Library 目录;下得Caches
NSArray *path3 = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); NSString *Caches = [path3 lastObject]; NSLog(@"%@",Caches);
5、零时目录tmp目录
NSString *tmpPath = NSTemporaryDirectory(); NSLog(@"%@",tmpPath);
归档 :NSKeyedArchiver
解归档: NSKeyedUnarchiver
归档又叫序列化(coding)
归档之后的文件 会被加密
可以归档的文件 数据 任何数据(直接归档一个类实例化的对象 数组 字典 字符串 文本 图片。。。。)
1、归档 步骤
//1.归档路径 需要归档的数据
//2.归档。解归档
1)、
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentPath = [paths lastObject];
2)、拼接归档文件的路径
NSString *path = [documentPath stringByAppendingPathComponent:@"userList.archiver"]; NSArray *users = @[@"葫芦娃",@"喵喵",@"旺旺"];
3)、归档
[NSKeyedArchiver archiveRootObject:users toFile:path]; NSLog(@"path 是%@",path);
2、解归档
//1.解归档的文件路径
//2.解归档
1)、
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *path = [[paths lastObject]stringByAppendingPathComponent:@"userList.archiver"];
2)、
NSArray *list = [NSKeyedUnarchiver unarchiveObjectWithFile:path]; for (NSString *name in list) { NSLog(@"%@",name); } NSMutableArray *arr = [list mutableCopy]; [arr addObject:@"娜扎"]; for (NSString *name in arr) { NSLog(@"%@",name); }
第二种归档方式
NSData 二进制数据的类
//1.归档文件的路径 准备归档的数据
//2.写一个可变的NSMutableData 通过归档的类 让Data准备写入到文件
//3.开始(归档)编码
//4.结束编码,或则归档 把Data数据写入到文件
1)、归档文件的路径 准备归档的数据
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *path = [[paths lastObject]stringByAppendingPathComponent:@"userList1.archiver"]; NSArray *list = @[@"1",@"2",@"3"]; NSDictionary *dic = @{@"key":@"value"};
2)、写一个可变的NSMutableData 通过归档的类 让Data准备写入到文件
NSMutableData *data = [NSMutableData data]; NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc]initForWritingWithMutableData:data];
3)、.开始(归档)编码(编码的key和解码时候的key一定要统一)
[archiver encodeObject:list forKey:@"list"]; [archiver encodeObject:dic forKey:@"dic"];
4)、结束编码,或则归档 把Data数据写入到文件
[archiver finishEncoding];
将数据写入 (先全部写入零时文件,在写入目标文件) atomically如果设置成yes在写入数据时,如果出现意外情况(用户突然强制退出了,或则断电了。。。)会把写入到零时文件的内容清掉 不再写入目标文件 如果atomically如果设置成是NO,不管数据是否完整,都会直接写入到目标文件
[data writeToFile:path atomically:YES];
2、解归档
//1.文件路径
//2.读取文件里面Data数据
//3.通过解归档对象 读取Data数据 准备解档
//4.解归档数据
1)文件路径
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *path = [[paths lastObject]stringByAppendingPathComponent:@"userList1.archiver"];
2)、读取文件里面Data数据
NSData *data = [NSData dataWithContentsOfFile:path];
3)、通过解归档对象 读取Data数据 准备解档
NSKeyedUnarchiver *unArchive = [[NSKeyedUnarchiver alloc]initForReadingWithData:data];
4)、解归档数据(又叫做解码)
NSArray *arr= [unArchive decodeObjectForKey:@"list"]; NSDictionary *diction= [unArchive decodeObjectForKey:@"dic"]; NSLog(@"%@",arr); NSLog(@"%@",diction);
要想归档 自定义类的对象
//1遵守归档协议NSCoding
//2实现归档协议里面的方法
//3逐一对 自定义类里面的属性 进行了 编码和解码 这时候 这个对象 就具备了 归档 解归档的功能
// 开始归档 解归档
//1 要归档文件的路径 要归档的数据 //2 进行归档
1)、要归档文件的路径 要归档的数据
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); NSString *path = [[paths lastObject]stringByAppendingPathComponent:@"UserModel.archive"]; UserModel *model = [[UserModel alloc]init]; model.name = @"武器大师"; model.age = 18; BOOL success = [NSKeyedArchiver archiveRootObject:model toFile:path]; if (success) { [self showAlertWithMessage:@"我靠,成了"]; NSLog(@"你妹的,出不来"); }
2)、解归档
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); NSString *path = [[paths lastObject]stringByAppendingPathComponent:@"UserModel.archive"]; UserModel *model = [NSKeyedUnarchiver unarchiveObjectWithFile:path]; NSLog(@"%@\n%ld",model.name,model.age);
相关文章推荐
- 为什么选择CocoaPods进行iOS代码的管理
- ios开发一些零碎的知识点(一)
- iOS开发中 在MRC中让某些类使用ARC编译 或者相反
- iOS开发中 在MRC中让某些类使用ARC编译 或者相反
- iOS的输入事件
- iOS开发之 KVC,KVO简单了解
- iOS实现带历史记录功能的计算器
- iOS简易柱状图(带动画)--新手入门篇
- 【iOS】iOS viewDidLoad 方法名问题
- iOS开发之 内存管理以及深浅拷贝
- iOS之学习系统提供的框架(库)和自己制作框架
- 手势识别 ios
- IOS开发之 ---- 苹果系统代码汉字转拼音
- iOS远程推送
- Cordova for iOS
- IOS开发-琐碎的知识点总结1
- iOS 导入相册视频文件
- IOS开发 IBOutlet与IBAction
- iOS开发系列—内存管理
- iOS开发 Debug-发布时取消打印(NSLog)