针对于归档和解档,在日常工作当中用的不多,但是它的原理很重要,所以有必要我们重点学习一下(归档是:写入磁盘前将自定义对象转换成二级制数据,解档是:将磁盘上的二级制数据转换成自定义对象)。
1.创建一个Person对象,写属性,遵守协议:
在Person.h文件中
#import <Foundation/Foundation.h>
@interface Person : NSObject <NSCoding> //此处要记得遵守NSCoding协议
@property (nonatomic, copy)NSString *name;
@property (nonatomic, assign)int age;
@end
2.创建一个Person对象,写属性,遵守协议:
在Person.m文件中
#import "Person.h" //此处是实现两个方法 encoder为编码器,decoder为解码器
@implementation WTPerson
-(void)encodeWithCoder:(NSCoder *)enCoder{
[enCoder encodeObject:_name forKey:@"WTname"];
[enCoder encodeInt:_age forKey:@"age"];
}
- (id)initWithCoder:(NSCoder *)Decoder{
if (self = [super init]) {
_name = [Decoder decodeObjectForKey:@"WTname"];
_age = [Decoder decodeIntForKey:@"age"];
}
return self;
}
@end
#import "ViewController.h"
#import "Person.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad{
[super viewDidLoad];
WTPerson *p = [NSKeyedUnarchiver unarchiveObjectWithFile:@"/Users/路径/Desktop/abc.plist"];
NSLog(@"%@",p);
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
WTPerson *p = [[WTPerson alloc]init];
p.age = 15;
p.name = @"zhangsan";
[NSKeyedArchiver archiveRootObject:p toFile:@"/Users/路径/Desktop/123.plist"];
}