【好程序员笔记分享】——归档

<A href="http://www.goodprogrammer.org/" target="blank">ios培训</A>------我的objective-c笔记,期待与您交流! 

在Objective-C中,归档是指用某种格式对一个和多个对象进行保存,以便以后方便使用。归档也称为数据保存。归档的过程一般分两个阶段,一个是对象的写入,另一个是对象的读取。

一·XML属性列表

XML属性列表可以用来将NSData、NSString、NSNumber、NSArray和NSDictionary类中的数据进行保存和读取。

1·使用XML进行数据保存

要将NSData、NSString、NSNumber、NSArray和NSDictionary类中的数据进行保存时,可以使用这些类中的writeToFile()方法,将数据写入文件

[类对象名 writeToFile:文件名称 atomically:YES]

类对象名是指NSData、NSString、NSNumber、NSArray和NSDictionary所创建的对象。调用中设置atomically为YES。这时系统首先将数据写到一个辅助文件中,当确认写成功以后,系统才把文件保存到指定位置。

2·使用XML进行数据读取

通过XML属性列表直接从文件中读数据到NSData、NSString、NSNumber、NSArray和NSDictionary类的对象中。

1)NSArray的读入方法

要将文件中的NSArray的数据从文件中读到NSArray类的对象中,使用的方法是arrayWithContentsOfFile()方法

[NSArray rrayWithContentsOfFile:文件名] 

2)NSDtionary的读入方法

当我们要将文件中的NSDictionary的数据从文件中读到NSDictionary类中的对象中,使用的方法是dictionaryWithContentsOfFile()方法

[yNSDtionary rrayWithContentsOfFile:文件名] 

3NSDictionary的读入方法

当我们要将文件中的NSString的数据从文件中读到NSString类的对象中,使用的方法是stringWithContentsOfFile()方法。

二·NSKeyedArchiver

当我们要将NSDictionary类中的数据保存在XML属性列表中时,要求数据的键必须是NSString对象,只可以是NSData、NSString、NSNumber、NSArray和NSDictionary中的一个或多个。为了解决这一局限,Objective-C提供了NSKeyedArchive。它可以保存NSData、NSString、NSNumber、NSArray和NSDictionary类和其他类的数据,但NSKeyedArchiver要求每个被保存的值都有一个键。

1·NSKeyedArchive的数据保存

当我们要将NSData、NSString、NSNumber、NSArray和NSDictionary类和其他类中的数据进行保存时,可以使用archiveRootObject()方法

[SKeyedArchive archiveRootObject toFile]

2·NSKeyedArchive的数据读取

要从文件中读数据到NSData、NSString、NSNumber、NSArray和NSDictionary类和其他类的对象中时,可以通过NSKeyedArchive中的读取方法unarchiveObjectWithFile()来读取文件中的数据。使用unarchiveObjectWithFile()

[SKeyedArchive unarchiveRootObject toFile]

三·编码和解码方法

1·编码方法

编码是归档的另一种称呼。对其他类进行归档时,必须知道系统如何对对象中的数据进行编码和解码。对于类进行编码的方法使用encodeWithCoder中的encodeObject()方法。

2·解码方法

当数据进行编码以后还需要进行解码,这时我们采用initWithCoder中的decodeObjectForKey()方法进行解码

四·保存多个对象到一个文件

将Mer类中的对象me1和point类中的对象
p1保存在文件“haha”中,然后将保存在文件中的数据读取。

五·使用归档程序复制对象

可以使用NSData和NSKeyedArchive来对一个对象进行复制。

小结:当进行归档时知道使用哪一种归档方式合适,会使用两种方式对类中的对象进行归档,并将多个对象保存到一个文件中,会对对象进行复制。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值