文档章节

数据持久化-归档和反归档

W
 Who_Care_Who
发布于 2015/05/07 17:40
字数 385
阅读 10
收藏 0
1. NSCoding + NSKeyArchiver

  要想对数据进行归档,首先你要遵守NScoding协议

举例:下面用万能的person类来进行举例,该类有两个属性,分别是:name 和 age;在.h文件中

#import <Foundation/Foundation.h>

@interface Person : NSObject<NSCoding>//归档和反归档之前必须遵循这个协议

@property(nonatomic, copy)NSString *name;

@property(nonatomic, assign)NSInteger age;

@end

在.m文件中 实现协议中的两个方法:

//编码
- (void)encodeWithCoder:(NSCoder *)acode
{//将person中的属性编号标签
    [acode encodeObject: self.name forKey:@"key_name"];
    
    [acode encodeObject: self.age forKey:@"key_age"];
}
//反编码
-(id)initWithCode:(NSCode *)aDecoder
{
    if(self = [super init])
    {
       self.name = [aDecoder decodeObjectForKey:@"key_name"];
       
       self.age = [aDecode decodeObjectForKey:@"key_age"];
    }
}
//写入数据
首先要对归档的类进行初始化
Person *person = [[Person alloc]init]; person.name = @"小明"; person.age = 22;

//将数据以NSData的形式临时储存
NSMutableData *persondata = [[NSMutableData alloc]init]; 

//创建归档工具,将data存储在此
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc]initForWritingWithMutableData:persondata];

//进行二进制转换
[archiver encodeObject:person forKey:@"p1"];

[archiver finishEncoding];

//将数据写入tem(随便写一个地方,正式用一般放在doucement),获取应用的tem路径
NSString *tempath = NSTemporaryDirectory();

//在路径后面拼接写入的文件名
NSString *temappending = [tempath stringByAppendingPathComponent:@"1.txt"];

//写入这个文件
[persondata writeToFile:temapppending atomicakky: YES];
//读出数据
//从上面路径取出data数据
NSData *data = [NSData dataWithContentOfFile:temappending];

//创建反归档工具
NSKeyedUnarchiver *unarchiver = [[NSKeyUnarchiver alloc]initWithReadingWithData:data];

//通过反归档工具获取对象,将二进制转回
Person *person1 = [unarchiver decodeObjectForKey:@"p1"];

//结束
[unarchiver finishDecoding];


© 著作权归作者所有

W
粉丝 1
博文 69
码字总数 28284
作品 0
海淀
私信 提问
iOS数据持久化之二——归档与设计可存储化的数据模型基类

iOS数据持久化之二——归档与设计可存储化的数据模型基类 一、引言 在上一篇博客中,我们介绍了用plist文件进行数据持久化的方法。虽然简单易用,但随着开发的深入,你会发现,这种方式还是有...

珲少
2015/10/08
1K
0
浅谈iOS开发中的对象归档

iOS提供的数据持久化方式有:SQLiteCoreData属性列表、NSUserDefault对象归档。 这里来简单介绍下iOS开发中的对象归档: 对象归档是将对象归档以文件的形式保存到磁盘中(也称为序列化,持久化...

泊菜
2014/11/27
4K
8
iOS数据持久化——数据归档

1、数据归档(Archive) 使用属性列表可以持久化数据,但是这种保存的方式是明文的不能达到文件的隐秘性。iOS中还提供了一种持久化的方法叫做数据归档,使用 (归档) 和 (解归档)类完成。这种方...

kinglin_fu
2016/01/29
132
0
iOS数据持久化

数据持久化 1、文件管理 1.1iOS沙盒机制: iOS应⽤用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码⽂件都要保存在此,例如图像,图标...

魏萌萌丶
2016/09/01
15
0
IOS(swift)-数据存储 · NSKeyedArchiver 归档

需求: 有一个通讯列表,可以自行添加联系数据,但是重新开启后,添加的数据都会清空,我希望打开后,上一次的数据能保留。 这我们就必须用到数据持久化,这一次,我将用NSKeyedArchiver 归档...

SoulJa
2015/10/31
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

安全组和云防火墙的区别

前言 熟悉云平台的朋友可能都会注意到这样一个事情:无论公有云还是私有云,创建虚拟机的时候都需要选择安全组,来对虚拟机进行安全防护;有的云平台在VPC里,还能选择防火墙,ZStack在3.6版...

ZStack社区版
22分钟前
2
0
教育性app开发的重要性和好处

在这个精通技术的世界中,流行的app主导着无聊的教育系统。当我们将技术和教育结合在一起时,它将带来当代以及强大的学习资源。因此,将教育移动app集成到您的学习过程中,并根据自己的信念把...

a429011717
22分钟前
3
0
IE6/7/8如何兼容CSS3属性

本文转载于:专业的前端网站➩IE6/7/8如何兼容CSS3属性 最近在工作中总是要求IE8兼容CSS3属性,在网上搜了搜主要是引入了一个htc文件(ie-css3.htc或者PIE.htc。个人认为这两个文件的作用差不...

前端老手
38分钟前
3
0
手把手教你ALLEGRO的约束规则的设置教程!

约束规则的设置 分三步, 定义规则(一、基本约束规则设置:1、线间距设置;2、线宽设置;3、设置过孔;4、区域约束规则设置;5、设置阻抗;6、设置走线的长度范围;7、设置等长:7.1、不过电阻的NET 等...

demyar
39分钟前
4
0
完美解决H5滚动滑动穿透方案:不使用系统滚动

网上有很多黑科技解决这个问题,都不是从根本去解决,例如通过js控制弹出时html加上position:fixed; 弹窗关闭后再去掉该样式,总觉得不太对,像是打补丁。 今天终于找到了滚动穿透的原因和完...

未来cc
44分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部