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; }
相关文章推荐
- ios开发日记 -16 Xcode6快捷键、小技巧与xib圆角设置
- ios开发系列之NSRange
- iOS实现手机的连续震动和停止震动的代码(拷如工程就能用)
- iOS CocoaPods的安装和使用详解
- IOS8下,百度地图无法定位解决办法,亲测可用
- 【Bug-iOS】Collection <__NSArrayM: 0x> was mutated while being enumerated.
- iOS 多线程笔记_(2)
- iOS开发有关导航条坐标问题
- iOS--字符串拼接
- iOS --时间戳
- iOS开源项目大全
- iOS 定位服务
- iOS9AdaptationTips
- 项目适配iOS9遇到的一些问题及解决办法(更新两个小问题)
- iOS获取设备版本信息
- IOS中堆和栈的区别
- iOS开发MAC下配置svn
- iOS苹果官方Demo合集
- Xcode模拟器不能选择 强制打开提示iOS Simulator 意外退出
- iOS9.0修改状态栏颜色