您的位置:首页 > 移动开发 > IOS开发

ios开发系列之对象的序列化与反序列化

2015-10-09 14:33 525 查看

把自定义类存储到本地的过程叫 对象的序列化(归档)

//本质:是把自定义类对象的属性打包成NSData数据(二进制数据)再把二进制数据存储到本地
[NSKeyedArchiver archiveRootObject:p toFile:[self getFilePath:@"p.txt"]];


把本地存储的自定义类的对象数据 转化成对象的过程 称为反序列化 (反归档)

//本质:把本地存储的自定义对象的二进制数据 转化为自定义对象的过程
People *p = [NSKeyedUnarchiver unarchiveObjectWithFile:[self getFilePath:@"p.txt"]];


这个时候我们就可以用p的已存储的属性

NSCoding 编码协议

如果想让我们的自定义类可以存储到本地文件中 自定义类必须实现
NSCoding
协议.

注意:当前类中有多少个属性,我们就对所有属性进行编码和解码

#define NAME @"name"
#define AGE @"age"

//编码 == encode    Coder === 编码器
- (void)encodeWithCoder:(NSCoder *)aCoder
{
//    使用编码器把属性进行编码  并且添加特定的key
[aCoder encodeObject:_name forKey:NAME];
[aCoder encodeInteger:_age forKey:AGE];
}
//解码  aDecoder 解码器
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super init];
if (self) {
//        使用解码器 根据key进行属性的解码
self.name = [[aDecoder decodeObjectForKey:NAME]];
self.age = [aDecoder decodeIntegerForKey:AGE];
}
return self;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: