美文网首页
iOS-归档

iOS-归档

作者: 我是谁重要吗 | 来源:发表于2018-05-09 16:33 被阅读1570次

    归档:
    数据从内存存储到闪存上 NSKeyedArchiver、NSKeyedUnarchiver
    归档后的文件是加密的,所以归档文件的扩展名可以随意取
    <一> 对Foundation框架中对象进行归档
    NSKeyedArchiver:
    采用归档的形式来保存数据,该数据对象需要遵守NSCoding协议,并且该对象对应的类必须提供encodeWithCoder:和initWithCoder:方法。前一个方法告诉系统怎么对对象进行编码,而后一个方法则是告诉系统怎么对对象进行解码。
    缺点:归档的形式来保存数据,只能一次性归档保存以及一次性解压。所以只能针对小量数据,而且对数据操作比较笨拙,即如果想改动数据的某一小部分,还是需要解压整个数据或者归档整个数据。
    归档这种保存方式缺点就是没有属性列表(NSuserDefault)速度快,因为它每次都要把文件保存到闪存中,优点是可以创建自己想要的数据模型,然后统一以模型方式存储,比属性列表要过分依赖Key要省心。
    NSKeyedArchiver、
    NSKeyedUnarchiver
    归档:
    [NSKeyedArchiver archiveRootObject:Array toFile:filename];
    finishDecoding
    解压:
    NSArray *arr = [NSKeyedUnarchiver unarchiveObjectWithFile: filename];
    finishEncoding

    <二> 对自定义的内容进行归档
    NSCoding 是一个简单的协议,有两个方法: -initWithCoder: 和 encodeWithCoder:。遵循NSCoding协议的类可以被序列化和反序列化,这样可以归档到磁盘上或分发到网络上。
    解码 编码
    解档:
    NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
    //解档出数据模型Student
    Student *mStudent = [unarchiver decodeObjectForKey:kDataKey];
    [unarchiver finishDecoding];//一定不要忘记finishDecoding,否则会报错
    归档:
    NSMutableData *data = [[NSMutableData alloc] init];
    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
    [archiver encodeObject:saveStudent forKey:kDataKey];
    [archiver finishEncoding];

    <三> 对自定义的对象进行归档(Bool int float double object)

    • (void)encodeWithCoder:(NSCoder *)aCoder
      {
      [aCoder encodeInt:_idNum forKey:IDNUM];
      [aCoder encodeObject:_name forKey:NAME];
      }

    pragma mark 解码 解码归档数据来初始化对象

    • (id)initWithCoder:(NSCoder *)aDecoder
      {
      if (self = [super init]) {
      _idNum = [aDecoder decodeIntForKey:IDNUM];
      _name = [aDecoder decodeObjectForKey:NAME];
      }
      return self;
      }

    http://blog.csdn.net/mad1989/article/details/9106475
    http://www.linuxidc.com/Linux/2015-03/115365.htm

    相关文章

      网友评论

          本文标题:iOS-归档

          本文链接:https://www.haomeiwen.com/subject/gunnrftx.html