归档 和 解归档

1、把任何类型的数据经过一定的加工 归档 最终能够存储起来
2、自定义了一个类 Class 创建了数据 怎么存起来 -> 二进制数据
归档的作用 能够把我们自己创建的类 存储起来 压缩的过程
解归档 就是把我们已经归档了的数据 再逆转回来 解压的过程
<NSCoding协议> 并且实现两个方法
//归档的时候 使用的方法 使用归档器 来进行操作

  • (void)encodeWithCoder:(NSCoder *)aCoder
    {
    //归档 实质 是给 类的成员变量 进行归档
    //使用归档器来进行归档
    [aCoder encodeObject:_name forKey:@"name"];
    [aCoder encodeInteger:_age forKey:@"age"];
    [aCoder encodeObject:_ID forKey:@"ID"];
    }
    //解归档的时候 使用的方法 使用解归档器 进行解归档

  • (instancetype)initWithCoder:(NSCoder *)aDecoder
    {
    //把归档了的成员变量都进行解归档
    self = [super init];
    if (self) {
    _name =[aDecoder decodeObjectForKey:@"name"];
    _age = [aDecoder decodeIntegerForKey:@"age"];
    _ID = [aDecoder decodeObjectForKey:@"ID"];
    }
    return self;
    }
    Student * laoWang = [[Student alloc]initWithAge:12 Name:@"laoWang" ID:@"010101"];

      //现在我们把 这个对象进行归档
      //归档
      NSMutableData * data = [[NSMutableData alloc]init];
      //把归档的数据都写到data里面
      NSKeyedArchiver * keyed =[[NSKeyedArchiver alloc]initForWritingWithMutableData:data];
       //归档器里面可以存放多个数据
      [keyed encodeObject:laoWang forKey:@"laoWang"];
      [keyed finishEncoding];
      //data已经拿到了老王的所有数据
      [data writeToFile:@"/Users/apple/Desktop/a" atomically:YES];
      
      //解归档
      NSKeyedUnarchiver *unKeyed = [[NSKeyedUnarchiver alloc]initForReadingWithData:data];
     Student * someOne = [unKeyed decodeObjectForKey:@"laoWang"];
      [unKeyed finishDecoding];
      NSLog(@"%@",someOne);
    

//main中归档解归档
//把归档的数据都写到data里面
NSKeyedArchiver * keyed =[[NSKeyedArchiver alloc]initForWritingWithMutableData:data];
//归档器里面可以存放多个数据
[keyed encodeObject:laoWang forKey:@"laoWang"];
[keyed finishEncoding];

//data已经拿到了老王的所有数据
[data writeToFile:@"/Users/apple/Desktop/a" atomically:YES];

//解归档
NSKeyedUnarchiver *unKeyed = [[NSKeyedUnarchiver alloc]initForReadingWithData:data];
Student * someOne = [unKeyed decodeObjectForKey:@"laoWang"];
[unKeyed finishDecoding];

二、多个对象的归档 如果有关系
Class Student
Class 有 Student
不仅让Class类 遵守Coding协议 Student也遵守Coding协议

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、归档的基本概念 之前将数据保存本地,只能是字符串、数组、字典、NSNuber、BOOL等容器类对象对象,不能将...
    空白Null阅读 5,241评论 1 10
  • 沙盒 Plist Preference偏好设置 NSKeyedArchiver归档 / NSKeyedUnarch...
    追风者366阅读 3,417评论 0 6
  • 下面是我最近两年学习OC中的一些基础知识,对于学习OC基础知识的人可能有些帮助,拿出来分享一下,还是那句话不喜勿喷...
    小小赵纸农阅读 2,662评论 1 7
  • 归档与反归档 复杂对象就是在Foundation框架内不存在的数据类,例如我们自定义的Person类。 复杂对象无...
    Joker_King阅读 2,842评论 4 4
  • 面向对象三大支柱封装:就是把相关的数据和代码结合成一个有机的整体,形成数据和操作代码的封装体,对外只提供一个可以控...
    WangDavid阅读 1,712评论 0 2