zoukankan      html  css  js  c++  java
  • 归档(NSKeyedArchiver)的使用

    归档的使用,是归于使用保存数据,但是一些简单的数据,如数组,字典等基本的数据类型,往往不使用在归档中,归档和plist以及UserDefaults最大的区别就在于,前者可以存放自定义的数据类型,而后两者只能存放基本的数据类型。

    本文只对归档(自定义的类型)进行概述。

    在归档的使用中,存放和读取和plist文件读取相似,都是对沙盒目录进行读取和存放,此处省略,读取和存放

    在自定义的类中要遵循NSCoder协议,协议中有两个代理方法,分别为:

    -(void)encodeWithCoder:(NSCoder *)encode//这个方法底层会去调用保存对象的encodeWithCoder方法,去询问要保存这个对象的哪些属性,例如person类型中的age,name属性
    {
    [encode encodeObject:self.name forKey:@"name"];
    }
    -(instancetype)initWithCoder:(NSCoder *)decoder//NSKeyedUnarchiver会调用initWithCoder这个方法,来让你告诉它去获取这个对象的哪些属性.
    {
      self.name=[decoder decodeObjectForKey:@"32"]
    }
    在读取或者保存的地方使用如下:
    NSString *filePath//filePath为沙盒目录的路径
    // 所以要实现encodeWithCoder方法, 告诉要保存这个对象的哪些属性.
        [NSKeyedArchiver archiveRootObject:person toFile:filePath];
    / NSKeyedUnarchiver会调用initWithCoder这个方法,来让你告诉它去获取这个对象的哪些属性.
        // 所以我们在保存的对象当中实现initWithCoder方法.
        Person *person = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
     
     
  • 相关阅读:
    thinkphp 事物回滚
    文字超出部分以省略号隐藏
    js倒计时
    js 日期转为时间戳
    jquery 获取url地址参数
    spreadjs 自定义菜单事件
    spreadjs 点击事件
    spreadjs 自定义上传文件单元格
    spreadjs 小记
    Json数组排序
  • 原文地址:https://www.cnblogs.com/Acee/p/5301648.html
Copyright © 2011-2022 走看看