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];
     
     
  • 相关阅读:
    [MS POST]Visual Studio Tips and Tricks
    Mono
    网络编程 socket编程
    Project Properties
    Review Error Handling
    [ILDASM Boxing]从进一步了解Struct和Class的不同学到的
    Steps to Bind VS solution to Source Control
    不已0开头的数字正则
    Jquery 解决移动端onclick事件300ms延迟问题
    毫秒转换日期
  • 原文地址:https://www.cnblogs.com/Acee/p/5301648.html
Copyright © 2011-2022 走看看