ios 归档学习笔记

归档是指用某种格式来保存一个或者多个对象,以便以后还原这些对象的过程。


使用xml属性列表进行归档

如果你是对NSString,NSDictionary,NSArray,NSData,NSNumber对象进行归档,可以使用类中实现的writeToFile:atomically:方法将数据写到文件中。

使用dictionaryWithContentsOfFile 或者arrayWithContentsOfFile,dataWithContentsOfFile,stringWithContentsOfFile方法读回数据。

使用NSKeyedArchiver归档

将各种类型的对象存储到文件中,不仅仅是字符串、数组和字典,有一种更灵活的方法,就是NSKeyedArchiver类创建带键的档案来完成。

带键的档案中,每个归档的字段都有一个名称。归档某个对象时,为它提供一个名称,即键。从归档中检索对象时,是根据这个键来检索的。

编码方法和解码方法

自定义的类对象不能直接归档。因为系统不知道如何进行归档。

按照<NSCoding>协议,在类中添加encodeWithCoder方法和initWithCoder方法实现归档规范。

encodeWithCoder方法告知归档程序如何进行归档。initWithCoder方法告知如何解编码。

前面描述的基本oc类,可以使用encodeObject:forKey进行编码,decodeObject:forKey来解码,对于基本的C类型使用如下方法

编码方法解码方法
encodeBool:forKey:decodeBool:forKey:
encodeInt:forKey:decodeInt:forKey:
encodeInt32:forKey:decodeInt32:forKey:
encodeInt64:forKey:decodeInt64:forKey:
encodeFloat:forKey:decodeFloat:forKey:
encodeDouble:forKey:decodeDouble:forKey:

来个例子:

- (void)encodeWithCoder:(NSCoder *)coder
{
    [coder encodeObject:@"tongxue"  forKey:@"name"];
    [coder encodeInt:13 forKey:@"age"];
}
- (id)initWithCoder:(NSCoder *)aDecoder
{
    NSString * name = [aDecoder decodeObjectForKey:@"name"];
    int age = [aDecoder decodeIntForKey:@"age"];
    return self;
}




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值