• 归档和解归档


    沙盒
    1.定义
             沙盒:IOS的沙盒(sandbox)机制:是一种安全体系,IOS应用程序只能对自己创建的应用程序进行读取文件,这个独立   封闭  安全的空间,就是咱们说得沙盒。他里面一般存放着你的程序需要的文件,数据持久化的一些文件(Plist sqlist…)音视频  图片以及其他资源文件
      
    2.每个应用程序只有一个沙盒   沙盒里面有三个文件夹
        1)Documents  目录下的内容 会被同步到另一台设备  可以存放媒体资源  文本资源
         2)Library   可以把缓存的内容放到Library/Caches
         3)tmp  创建临时文件的目录,当我们的设备重启时,文件会被自动清除
         4)获取根目录的方式
                 NSString *homePath = NSHomeDirectory();
         5)获得Documents的方式
                  NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
                  NSString *DocumentsPath = [paths firstObject];
         6)   获取Library目录
                  NSArray *path2 = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES];    
                  NSString *library = [path2 lastObject];
         7)     获取Caches目录
                   NSArray *Path3 = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
                     NSString *library = [path3 lastObject];
         8)获取临时文件目录Tmp
           NSString *tmpPath = NSTemporaryDirectory();
    
    
    
    归档
    1.定义
            归档 :把咋们内存里面的数据放到一个文件里面   归档又叫序列化(coding)归档后的文件 会被加密
    
    2.使用的类   NSKeyedArchiver(归档)   NSKeyedUnarchiver(解归档)
    3.归档可以归档文件  数据  任何数据(直接归档一个类实例化的对象  数组  字典  字符串  文本  图片...)
    
    4.第一种归档
             归档步骤  1.归档路径  需要归档的数据   2.归档  解归档
                       NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask/*收索范围*/, YES);
                        NSString *documentsPath = [paths lastObject];
              拼接归档文件的路径
                        NSString *path = [documentsPath stringByAppendingPathComponent:@“userList.archiver"];
               将小米 ,小明,小海归档  将他们放到一个数组里
                         NSArray *users = @[@“小米",@"小明",@"小海"];
                         BOOL success = [NSKeyedArchiver archiveRootObject:users /*归档的数据*/toFile:path/*归档路径*/];
                          
                
    解归档
    
    1.步骤    1)解归档的文件路径    2)解归档
                 NSArray *paths1 = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
                  NSString *path = [[paths1 lastObject] stringByAppendingPathComponent:@“userList.archiver/*这里的路径要和归档的时候相同*/”];   
                   NSArray *list = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
    
    
    
    5.第二种归档
          这里要使用NSData  二进制数据类
    归档
       1)步骤   
                 (1)归档文件路径  准备需要归档的数据
                 (2)写一个NSMutableData 通过归档的类  让Data准备写入到文件
                 (3)开始(归档)编码
                 (4) 结束(归档)编码  把Data数据写入到文件
    
    归档的数据数组 字典
      NSArray *list = @[@"111",@"222",@"333"];
      NSDictionary *dic = @{@"key":@"value"};
    
    (1)归档文件路径  准备需要归档的数据
               NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
                NSString *path = [[paths lastObject] stringByAppendingPathComponent:@“userList.archiver”];
    
     (2)写一个NSMutableData 通过归档的类  让Data准备写入到文件
                NSMutableData *data = [[NSMutableData alloc]init];
                NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc]initForWritingWithMutableData:data];  
     
      (3)开始(归档)编码
                [archiver encodeObject:list forKey:@“list"];
                [archiver encodeObject:dic forKey:@“dic"];
    
      (4) 结束(归档)编码  把Data数据写入到文件
                  [archiver finishEncoding];
                  BOOL success = [data writeToFile:path atomically:YES];
             说明:atomically 设置为YES的时候 在写入数据时  如果出现意外情况(用户突然强制退出了应用程序  断电。。。)会把写入的临时文件的内容 清除 不在写入到目标文件
                 设置为NO的时候 在写入数据时  如果出现意外情况(用户突然强制退出了应用程序  断电。。。)都会把写入的临时文件的内容写入到目标文件(不论文件是否完整)
    
    
    解归档
        步骤:
            1.文件路径
           2.读取文件里面Data数据
           3.通过解归档对象 读取Data数据 准备解归档
           4.解归档数据
    
    1.文件路径
           NSArray *paths1 = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
          NSString *path1 = [[paths1 lastObject] stringByAppendingPathComponent:@“userList.archiver"];
    
      2.读取文件里面Data数据
          NSData *data1 = [NSData dataWithContentsOfFile:path1];
    
      3.通过解归档对象 读取Data数据 准备解归档
          NSKeyedUnarchiver *unArchiver = [[NSKeyedUnarchiver alloc]initForReadingWithData:data1];
    
      4.解归档数据
           NSArray *arra = [unArchiver decodeObjectForKey:@“list”];
            NSDictionary *dict = [unArchiver decodeObjectForKey:@"dic"];
    
       
    
    6.第三种归档
                   
         想归档  自定义类的对象
    步骤
           1)遵守NSCoding协议
           2)实现归档协议里面的方法
           3)逐一对 自定义类里面的属性 进行了编码和解码 这时候这个对象 就具备了归档 解归档的功能
           4)开始归档 解归档
    代码:
             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];
    
    
    解归档
          NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
           NSString *path = [[paths lastObject] stringByAppendingPathComponent:@“UserModel.archive"];
           UserModel *model = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
          
    
       NSStNSString *path = [documentsPath stringByAppendingPathComponent:@"userList.archiver"];ring *documentsPath = [paths lastObject];
    
  • 相关阅读:
    [解决方案]sql server复制需要有实际的服务器名称才能连接到服务器
    [解决方案]解决SQL Server管理器无法连接远程数据库的问题
    event.keyCode对照表
    安卓环境搭建
    什么是 MIME Type?
    Gregexpr(可用来判断一个字符串在另一个字符串中出现的位置)
    paste函数(用于字符串的连接等)
    read.csv与write.csv
    JSF使用<p:fileUpload>进行上传图片出现的javax.servlet.ServletException: The request contenttype is not a multipart/formdata错误解决
    组合函数combn
  • 原文地址:https://www.cnblogs.com/liYongJun0526/p/4881295.html
Copyright © 2020-2023  润新知