归档 存储数据

作者: 放肆肆肆 | 来源:发表于2016-06-03 01:38 被阅读184次

归档一般都是保存自定义对象的时候,使用归档.因为plist文件不能够保存自定义对象.

如果一个字段当中保存有自定义对象,如果把这个字典写入到文件当中 它是不会生成Plist文件的

Person*persion = [[Person alloc]init];

person.name=@"WK";

person.age=18;

获取沙盒临时目录

NSString *tempPth = NSTemporaryDirectory();

NSString *filePath = [tempPath stringByAppendingPathComponent :@"person.data"];

[NSKeyedArchiver archivRootObject:person toFile:filePath];

archiveRootObject 这个方法底层会去调用保存对象的encodeWithCoder方法,去询问要保存这个对象的那些属性.

所以要实现encodeWithCoder方法 ,告诉要保存对象的那些属性.

需要遵循<NSCoding>协议

@interfacePersion :NSObject <NSCoding>

@property (nonatomic, strong)NSString *name; 

@property (nonatomic, assign) int age;

遵循协议后可以实现方法

需要报保存对象的属性

- (void)encodeWithCoder:(NSCoder *) encode{

[encode encodeObject:self.name forKey:@"name"];

[encode encodeInt32:self.age forKey:@"age"];

}

获取沙盒临时目录

NSString *tempPath =NSTemporaryDirectory();

NSString *filePath = [tempPath stringByAppendingPathComponent:@"persion.data"];

Persion *persion = [NSKeyedUnarchiver

unarchiveObjectWithFile:filePath];

NSKeyedUnarchiver 会调用initWithCoder来让你告诉他获取对象的那些属性

所以我们要在保存的对象中实现initWithCoder方法

initWithCoder会在解析文件的时候调用

-(instancetype)initWithCoder:(NSCoder*)decoder{

//因为遵循了NSCoding协议 所以不需要[super initWithCoder];

if  (self = [super init]) {

self.age = [decoder decodeInt32ForKey:@"age"];

self.name = [decoder decodeObjectForKey:@"name"];

//需要给里面的属性赋值,外界取得对象时访问该属性,里面才会有值  

}

return self;

}

相关文章

  • 缓存之归档、反归档

    归档反归档是数据存储方式的一种。归档将复杂数据结构转换成NSData进行存储,反归档将NSData转成复杂数据结构...

  • iOS-归档NSCoding序列化

    归档 归档->数据持久化的方式->加密(把文件加密《不是把数据加密》 归档分为: 1、存储数据(编码、序列化、归档...

  • 归档 存储数据

    归档一般都是保存自定义对象的时候,使用归档.因为plist文件不能够保存自定义对象. 如果一个字段当中保存有自定义...

  • 归档 存储数据

    归档一般都是保存自定义对象的时候,使用归档.因为plist文件不能够保存自定义对象.如果一个字段当中保存有自定义对...

  • UI控件进阶3——数据存储

    数据存储 iOS应用数据存储的常用方式?XML属性列表(plist)归档(归档:用某种格式来保存一个或者多个对象,...

  • ios面试题7

    三.数据存储 1.数据存储技术 1>数据存储的几种方式 XML属性列表(plist)归档 Preference(偏...

  • 3.1 数据持久化(存储)---数据存储(FMDBDemo)

    数据持久化(存储)---数据存储 数据存储几种方式 1: 归档 重点 必会 常用于自动登录2: NSdi...

  • OC 数据归档

    数据归档作为一种轻量级的数据存储方式,和属性列表不同之处在于存储的对象广泛,几乎任何类型的对象都能被归档存储且存储...

  • iOS数据存储

    iOS开发中数据存储有两类:一、存储为文件 如归档、解归档、plist文件存储及偏好设置都是存储为文件二、存储到...

  • ios数据存储

    数据存储 iOS应用数据存储的常用方式 - XML属性列表(plist)归档 - Preference(偏好设置)...

网友评论

    本文标题:归档 存储数据

    本文链接:https://www.haomeiwen.com/subject/bnwhdttx.html