zoukankan      html  css  js  c++  java
  • Archiver 浅析

    归档是一个过程,即用某种格式来保存一个或多个对象,以便以后还原这些对象。通常,这个过程包括将(多个)对象写入文件中,以便以后读取该对象。

    两种归档数据的方法:属性列表和带键值的编码。

    属性列表局限性很大,一般不适用。

    -)使用NSKeyedArchiver归档

    若要将各种内置类型的对象存储到文件中,不仅仅是NSString、NSArry,NSDictionary,NSSet、NSDate、NSNumber和NSData,还有他们之间的组合,利用NSKeyedArchiver归档是一种灵活的方法。这些内置数据类型都已经实现<NSCoding>协议。

    二)使用NSData创建自定义归档

    如果要归档自定义的数据类型,那就要在要在类定义中添加编码encodeWithCoder:方法和initWithCoder:解码方法,以实现<NSCoding >协议。编码方法应该指定如何归档想要保存的对象中的每个实例变量。对于基本的C数据类型,和对象类型都是有对应的编码解码方法。这个可以查,比如对象型decodeObject:forKey:来解码基本的Object-C类。

    如果要存储所有的对象,就可以用NSData通用数据流对象类。这也是最具有通用性的方法。

    使用的步骤:

    第一步:确保要归档的每个自定义类都实现了<NSCoding>协议,(内置类已经已经实现,不需要担心);

    第二步:设置数据区,并将其连接到一个NSKeyedArchiver对象

    NSData  *data=[NSMutableData  data]

    NSKeyedArchiver *archiver=[[NSkeyedArchiver alloc ] initForWritingMutableData:data];

    第三步:归档

     [arhiver ecodeObject:id forkey:@""];

        ........

    [archiver finishEncoding];

    第四步:将存档的数据区写入文件中。

    例如:

    [[NSUserDefaults standardUserDefaults] setObjet:data forKey:@""];

    反过来也是一样;取得文件中归档数据,解码就可以了。

  • 相关阅读:
    springCloud中的服务调用feign
    模块化理解
    springCloud中的注册中心Nacos
    vue路由理解
    vue生命周期理解
    webpack理解
    连接查询理解
    [HDU]5691Sitting in Line (状压DP)
    [Kattis]redblacktree(树形依赖背包,DP优化)
    Codeforces Round #699 (Div. 2)
  • 原文地址:https://www.cnblogs.com/changeUniversal/p/4662540.html
Copyright © 2011-2022 走看看