CYC- 复杂对象归档 反归档
2015-09-28 20:31
316 查看
#import <Foundation/Foundation.h> @interface Student : NSObject<NSCoding> @property (nonatomic,retain) NSString *name; @property (nonatomic,assign) NSInteger age; @property (nonatomic,retain) NSData *data; @end
#import "Student.h" @implementation Student - (void)dealloc { [_name release]; [super dealloc]; }
/ 归档 进行编码 - (void)encodeWithCoder:(NSCoder *)aCoder { [aCoder encodeObject:self.name forKey:@"name"]; [aCoder encodeInteger:self.age forKey:@"age"]; [aCoder encodeObject:self.data forKey:@"data"]; } // 反归档 解码 - (id)initWithCoder:(NSCoder *)aDecoder { self = [super init]; if (self) { self.name = [aDecoder decodeObjectForKey:@"name"]; self.age = [aDecoder decodeIntegerForKey:@"age"]; self.data = [aDecoder decodeObjectForKey:@"data"]; } return self; } @end
// 归档复杂对象 - (void)archive { // 获取Documents文件路径 #define kDocumentsPath [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] Student *student = [[Person alloc] init]; student.name = @"wangLong"; student.age = 18; // UIImagePNGRepresentation([UIImage imageNamed:@"shenJ.jpg"]) // 将png图片 转化成data student.data = UIImagePNGRepresentation([UIImage imageNamed:@"shenJ.jpg"]); // 创建一个可变的DATA 进行对 复杂对象编码后的储存 NSMutableData *data = [NSMutableData data]; // 创建归档对象 NSKeyedArchiver *archive = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; // 进行归档 [archive encodeObject:student forKey:@"student"]; // 归档结束 [archive finishEncoding]; NSString *archivePath = [kDocumentsPath stringByAppendingPathComponent:@"saveStudent"]; NSLog(@"%@",archivePath); // 写入归档文件 [data writeToFile:archivePath atomically:YES]; [student release]; [archive release]; } // 反归档 - (void)unarchive { NSString *archivePath = [kDocumentsPath stringByAppendingPathComponent:@"saveStudent"]; // 按路径读取 归档的data文件 NSData *data = [NSData dataWithContentsOfFile:archivePath]; // 创建反归档对象 NSKeyedUnarchiver *afrinde = [[NSKeyedUnarchiver alloc]initForReadingWithData:data]; // 取出归档的对象 Student *student = [afrinde decodeObjectForKey:@"student"]; UIImage *image = [UIImage imageWithData:student.data]; NSLog(@"%@",student.name); }
相关文章推荐
- glib学习--hash table02
- 线段树的总结1
- PHP安全编程:记住登录状态的安全做法
- 学写jquery插件
- glib学习--hash table01
- 十进制转换为二进制序列,并输出1的个数,和序列的奇偶序列
- 数据持久化的方式
- UI 第1讲 UIView
- windows android studio环境下.so文件的配置
- C/C++中结构体的区别
- Random Forests
- 使用指针实现字符串的插入
- 利用linux系统命令分析PHP程序
- 复杂对象写入文件--就是自己写的继承自NSObject类的子类
- 数学基础
- Swift - 后台获取数据(Background Fetch)的实现
- 5233杨光--Linux第二次实验
- 删除binlog的方法
- Swift - 让程序挂起后,能在后台继续运行任务
- QEMU-KVM自己主动创建虚拟机,以指定IP构造