iOS数据持久化之归档NSKeyedArchiver(2)

 

#define IDNUM @"idNum" #define NAME @"name" @interface Student : NSObject <NSCoding> @property (nonatomic, assign) int idNum; @property (nonatomic, copy) NSString *name; @end @implementation Student #pragma mark 编码 对对象属性进行编码的处理 - (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; } @end

 

  小结:

自定义对象与自定义内容归档和解归档步骤和用法完全相同

自定义的对象归档需要实现NSCoding协议,并且实现协议中的方法

NSCoding协议中有两个方法:

  encodeWithCoder方法对对象属性进行编码,在对象归档时调用

  initWithCoder方法解码归档数据来初始化对象,在对象解归档时调用

 

  总结:

归档和解归档可以用于少量数据的持久化存储和读取

属性列表只能存储Foundation框架中的对象,归档除了可以归档Foundation框架中的对象以外,还可以归档实现了NSCoding协议的自定义对象

通过归档创建的文件是加密的

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/2e7a878182638729b2905e2da3562c7f.html