自动化归档的实现

2016-02-04

利用Runtime实现自动化归档与解档的两种方法

如果对运行时不太了解的可以简单的通过下面的项目初步了解,如果要系统学习请自行谷歌。
首先我建立了两个类,分别用不同方法实现自动归档与解档,两种方法区别不是很大,都是利用runtime实现,只是在代码处理上有着不同的思路。一种使 AutoArchiver类,另一种是AutoArchiverHelper类,你可以任选一种导入到你的工程中。使用起来非常简单,只需要继承这两个类中的一个即可,子类不需要再遵循NSCoding协议,也不需要实现它的协议。

一. 建立Person

Person.h

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 #import "Person.h"

@interface Person : AutoArchiverHelper{

NSString *_name;

NSString *age;

NSString *sex;

NSString *_ID;
}

@property (nonatomic, strong)NSString *name;

@property (nonatomic, strong)NSString *age;

@property (nonatomic, strong)NSString *sex;

@property (nonatomic, strong)NSString *ID;

@end

Person.m

1
2
3
4
5
6
@implementation Person

@synthesize name=_name,ID=_ID,age=age,sex=sex;

@end

二. 在其他类导入 #import"AutoArchiverHelper.h" 或者 #import "AutoArchiver.h"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
NSString *file2 = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject         stringByAppendingPathComponent:@"person.data"];

Person *person = [[Person alloc]init];

person.name = @"jack";

person.age =@"11";

person.ID =@"510722199912121212";

person.sex = @"man";

[NSKeyedArchiver archiveRootObject:person toFile:file2];

Person *jack =[NSKeyedUnarchiver unarchiveObjectWithFile:file2];

NSLog(@"%@",jack.name);

NSLog(@"%@",jack.age);

NSLog(@"%@",jack.ID);

NSLog(@"%@",jack.sex);

NSLog(@"%@",jack);

总结

最后送上项目工程地址:https://github.com/woodjobber/AutoArchiverHelper

Bugs反馈: `woodjobber@outlook.com`

微信公众号:嘀咕嘀咕(iOSSharers)

扫二维码关注