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];
     
     
  • 相关阅读:
    LUA之面向对象
    LUA笔记之表
    LUA笔记之字符串
    STM32模拟I2C
    php(1)-php5.6启动命令
    ip地址变更对tomcat和nginx的影响
    解决 nginx: [alert] kill(189, 1) failed (3: No such process)
    linux(16)-yum安装提示“没有可用软件包”
    性能测试监控分析(17) 负载和CPU使用率低高负载的原因
    Codeforces Round #588 (Div. 2)C(思维,暴力)
  • 原文地址:https://www.cnblogs.com/Acee/p/5301648.html
Copyright © 2011-2022 走看看