归档解档(编码解码)
来源:互联网 发布:知已知彼的意思是什么 编辑:程序博客网 时间:2024/05/16 05:10
每次归档对象时,都会调用这个方法。一般在这个方法里面指定如何归档对象中的每个实例变量,可以使用encodeObject:forKey:方法归档实例变量。
每次从文件中恢复(解码)对象时,都会调用这个方法。一般在这个方法里面指定如何解码文件中的数据为对象的实例变量,可以使用decodeObject:forKey方法解码实例变量。
NSArray*array = [NSArray arrayWithObjects:@”a”,@”b”,nil];
[NSKeyedArchiver archiveRootObject:array toFile:path];
NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
4. 自定义对象归档/解档总结:
1.如果要存储自定义对象一定要用“归档/解档”的操作;
2.plist.偏好设置都不能用来存储自定义的对象;
3.自定义对象归档/解档的时候一定要遵守<NSCoding>的协议;
4.只要解析文件都会调用initWithCoder:的方法;
5.在解档属性的时候,记得给属性赋值!!!!
6.为什么要遵守<NSCoding>协议? 为了告诉系统归档/解档哪些属性,告诉系统如何进行归档解档。
6. 一个自定义对象的归档解档Demo:
==================创建一个遵守 NSCoding协议的类=========================
@interface Teacher :NSObject <NSCoding>
@property (nonatomic,assign) int age;
@property (nonatomic,copy) NSString* name;
@end
#import "Teacher.h"
@implementation Teacher
// 告诉系统需要归档哪些属性
- (void)encodeWithCoder:(NSCoder*)aCoder
{
[aCoder encodeInt:_ageforKey:@"age111111"];
[aCoder encodeObject:_nameforKey:@"name"];
}
// 告诉系统解档哪些属性
- (id)initWithCoder:(NSCoder*)aDecoder
{
if (self = [superinit]) {
_age = [aDecoder decodeIntForKey:@"age111111"];
_name = [aDecoder decodeObjectForKey:@"name"];
}
return self;
}
@end
==================创建一个导入了 自定义Teacher类的控制器 ViewController =========================
#import "ViewController.h"
#import "Teacher.h"
@interface ViewController ()
@end
@implementation ViewController
// 存数据
- (IBAction)save:(id)sender
{
// tmp
NSString* tmpPath =NSTemporaryDirectory();
NSString* filePath = [tmpPathstringByAppendingPathComponent:@"teacher.data"];
Teacher* t = [[Teacheralloc] init];
t.name = @"传智播客";
t.age = 18;
[NSKeyedArchiverarchiveRootObject:t toFile:filePath];
}
// 取数据
- (IBAction)read:(id)sender
{
NSString* tmpPath =NSTemporaryDirectory();
NSString* filePath = [tmpPathstringByAppendingPathComponent:@"teacher.data"];
Teacher* t = [NSKeyedUnarchiverunarchiveObjectWithFile:filePath];
NSLog(@"%d", t.age);
}
- 归档解档(编码解码)
- 数据的编码与解码(归档与反归档)
- 归档自定义对象用到的编码解码
- 归档,反归档,编码者,解码者(重要)
- 八十七、基础框架(四十五)归档-编写 编码措施 和 解码措施
- Base64编码/解码(源代码)
- 编码&解码(encode & decode)
- Html编码(&#数字型)解码
- uva1262(编码与解码)
- 编码->解码
- 编码 解码
- 编码解码
- 编码 解码
- 编码、解码
- 编码解码
- 编码解码
- 编码解码
- 编码解码
- 响应者链条
- uva 1572
- Web小功能1——jquery实现一个按钮两个功能(触发不同事件)
- C++ 封装
- ZOJ 3760 Treasure Hunting(最大流)
- 归档解档(编码解码)
- C++ 类外定义
- 3D-Touch介绍与细节实现&App架构配合总结
- 通过拖拽手势移动一个控件
- debian 添加永久环境变量方法
- 按屏幕大小设置dialog宽高
- java-web-j2e学习建议路线
- Android下如何进行图片缩放
- BFS POJ3278Catch That Cow