美文网首页GXiOS
iOS开发之归档

iOS开发之归档

作者: Ming普 | 来源:发表于2016-07-09 09:35 被阅读102次

前言

归档:将对转序列化成二级制数据,并保存在文件中。

解归档:将归档后的数据反序列化成明码(能够看懂)对象,供我们使用。

说明:只有遵守了NSCoding或 NSSecureCoding(更为安全的归档协议,想要深入了解可以留下评论)协议,并且实现了协议里归档与解归档的方法的的类创建的对象才能够进行归档。

//归档时会自动调用encodeWithCoder:(NSCoder *)aCoder

- (void)encodeWithCoder:(NSCoder *)aCoder

// 解归档的时候 会自动调用 initWithCoder:(NSCoder *)aDecoder

- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder


将单个对象归档与解归档

将单个对象归档与解归档

看不懂是怎么找路径给path赋值的,请移步这里查看。

采用archiveRootObject方法在同一路经下只能归档一个对象。但如果此时我想将我传进来的名字和年龄都归档,只需将这两个数据放到一个字典对象里。让后将字典给归档便可。将归档方法变为如下即可。

- (void)archiverName:(NSString *)name WithAge:(NSNumber *)age {

//[NSKeyedArchiver archiveRootObject:name toFile:path];

//[NSKeyedArchiver archiveRootObject:age toFile:path];

NSMutableDictionary *dict = [NSMutableDictionary dictionary];

dict[@"name"] = name;

dict[@"age"] = age;

[NSKeyedArchiver archiveRootObject:dict toFile:path];

//验证是否将字典给归档

id content =  [NSKeyedUnarchiver unarchiveObjectWithFile:path];

NSLog(@"%@",content);

}

对自定义的类的单个对象创建的对象归档与解归档

对自定义的类的单个对象创建的对象归档与解归档Person是我自定义的一个类在前言部分咱们说过只有遵守了NSCoding或NSSecureCoding(更为安全的归档协议,想要深入了解可以留下评论)协议,并且实现了协议里归档与解归档的方法的的类创建的对象才能够进行归档。因此我们需要对Person类做以下操作。遵守NSCodeing协议(暂不考虑NSSecureCoding)实现-(void)encodeWithCoder:(NSCoder *)aCoder;实现-(nullable instancetype)initWithCoder:(NSCoder *)aDecoder;Person.h    #import@interface Person : NSObject@property (nonatomic,copy) NSString *name;

@property (nonatomic,assign) NSInteger age;

@property (nonatomic,copy) NSString *sex;

@end

Peroson.m

#import "Person.h"

@implementation Person

//被归档的时候会调用者方法,aCoder就是归档时传过来的归档对象

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

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

[aCoder encodeInteger:self.age forKey:@"age"];

[aCoder encodeObject:self.sex forKey:@"sex"];

}

//解归档的时候会调用这个方法

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

//解归档时会产生一个Person对象,这里是给这个Person对象赋值。

self = [super init];

if (self) {

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

self.age = [aDecoder decodeIntegerForKey:@"age"];

self.sex = [aDecoder decodeObjectForKey:@"sex"];

}

return self;

}

@end

同时将多个的对象归档与解归档

同时将多个系统类创建的对象归档与解归档

你自己可以试试在这里也将自定义的Person类给归档。

相关文章

  • iOS开发之归档

    对于iOS开发中的归档,最近刚好在项目中使用到了归档,所以查了查资料,查缺补漏,现总结如下:什么时候使用归档? 归...

  • iOS开发之归档

    前言 归档:将对转序列化成二级制数据,并保存在文件中。 解归档:将归档后的数据反序列化成明码(能够看懂)对象,供我...

  • iOS归档总结

    iOS归档总结,高效开发,欢迎star

  • 归档-解归档

    归档-解归档 在iOS开发中,数据持久化方法很多,比如:SQL、KeyChina、CoreData、NSUserD...

  • 浅析iOS中的归档与反归档

    今天我们要搞一搞iOS开发当中的归档和反归档,在进入正题之前,我们需要了解一下归档和反归档是干什么用的。 所谓归档...

  • iOS开发之归档(NSKeyedArchiver)和反归档(NS

    1:对foundation框架的对象进行归档2:对自定义的对象进行归档3:对自定义内容进行归档注意:归档生成的文件...

  • iOS开发之归档(NSKeyedArchiver)和反归档(NS

    前言 iOS开发中难免会遇到数据存储的问题,苹果为我们提供了沙盒机制持久化存储数据 (iOS程序默认情况下只能访问...

  • iOS-12 数据存储

    1iOS数据存储之Core Data(一) - 简书 2iOS数据存储之归档 - 简书 3iOS数据存储之偏好设置...

  • iOS数据存储(一)

    iOS开发常用的数据持久化方式有NSUserdefaults(属性列表),NSKeyedArchiver(归档/解...

  • iOS开发之定位

    iOS开发之定位 iOS开发之定位

网友评论

    本文标题:iOS开发之归档

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