iOS中复杂对象对象的归档返归档
来源:互联网 发布:将字符串变成数组 编辑:程序博客网 时间:2024/04/27 13:22
iOS中复杂对象对象的归档返归档
归档与返归档听起来高大上,说的简单一些就是较之字符串,字典,数组等更复杂对象的写入与读取.
这里的复杂对象说的是Foundation框架内不存在类,假如我们自定义了一个类继承于NSObject
@interface Person : NSObject
@property (nonatomic,copy) NSString *name;
@property (nonatomic,copy) NSString *sex;
@end
Person有两个属性name,sex
在ViewController的viewDidLoad方法中
我们创建两个对象
Person *p = [[Personalloc] init];
p.name =@"霸王";
p.sex = @"男";
Person *p1 = [[Personalloc] init];
p1.name = @"铁锤";
p1.sex = @"女";
这时候我们想以NSData类型保存这两个对象就需要用到NSKeyedArchiver类,读取用到NSKeyedUnarchiver注意两者的区别
接下来我们开始
第一步:
在自定义的类中接受协议<NSCoding>
@interface Person :NSObject<NSCoding>
@property (nonatomic,copy)NSString *name;
@property (nonatomic,copy)NSString *sex;
@end
第二步:在Person.m中实现两个方法
归档(写入)
-(void)encodeWithCoder:(NSCoder *)aCoder{
[aCoder encodeObject:self.nameforKey:@"name"];
[aCoder encodeObject:self.sexforKey:@"sex"];
}
返归档(读取)
-(instancetype)initWithCoder:(NSCoder *)aDecoder{
NSLog(@"调用了返归档方法");
self = [superinit];
if (self) {
self.name = [aDecoderdecodeObjectForKey:@"name"];
self.sex = [aDecoderdecodeObjectForKey:@"sex"];
}
return self;
}
第三步:
写入
回到ViewController的viewDidLoad方法中
//NSDdata对象初始化
NSMutableData *data = [NSMutableDatadata];
//使用归档工具
NSKeyedArchiver *archiver = [[NSKeyedArchiveralloc] initForWritingWithMutableData:data];
[archiver encodeObject:p forKey:@"p"];
[archiver encodeObject:p1 forKey:@"p1"];
// 标志归档结束
[archiver finishEncoding];
// 保存到Document下person.dat中
NSString *path =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES)[0];
path = [path stringByAppendingString:@"/person.dat"];
NSLog(@"%@",path);
[data writeToFile:pathatomically:YES];
读取
NSData *readData = [[NSDataalloc] initWithContentsOfFile:path]; // path是上文中路径
// 返归档用到的工具
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiveralloc] initForReadingWithData:readData];
Person *pp = [unarchiver decodeObjectForKey:@"p"];
Person *pp1 = [unarchiver decodeObjectForKey:@"p1"];
NSLog(@"%@--%@",pp.name,pp.sex);
NSLog(@"%@--%@",pp1.name,pp1.sex);
- iOS中复杂对象对象的归档返归档
- iOS讲解迷惑深入浅出之复杂对象的归档
- iOS疯狂详解之复杂对象归档反归档
- iOS经典讲解之复杂对象的数据持久化-归档与反归档
- iOS疯狂讲解之复杂对象的归档与反归档
- iOS 复杂对象持久化 归档和反归档的过程
- IOS 对象的归档与解档
- iOS对象的归档与解档
- iOS 对象归档(1) 对foundation中对象进行归档
- CYC- 复杂对象归档 反归档
- ios中 继承对象模型的归档实现
- IOS --- 对象归档
- IOS --- 对象归档
- ios对象归档
- IOS存储对象(归档)
- iOS之对象归档
- iOS--对象归档
- iOS中对象属性的归档和解档(runtime+KVC)快捷解决方案
- NEHE阅读笔记-3D多边形
- 改进神经网络的学习方式(译文)----下
- springmvc之处理模型数据之map
- 最近的一些总结
- final,static关键字
- iOS中复杂对象对象的归档返归档
- Mysql MVCC详解
- 2016-1-9
- Struts2类型转换学习笔记
- 实现Android的不同精度的定位(基于网络和GPS)
- DNS 域名解析 (主机解析 地址解析 ) 网络协议
- 二维数组
- mui ajax 带header 提交
- mysql-Innodb事务隔离级别-repeatable read详解(转)