原文地址:http://jingyan.baidu.com/article/6b97984d9481f61ca2b0bfd4.html
方法/步骤
-
例如:对person 对象进行归档。
首先。person.h文件
#import <Foundation/Foundation.h>
@interface JPerson : NSObject <NSCoding>
@property(nonatomic,copy)NSString *name;
@property(nonatomic,assign)int age;
@property(nonatomic,assign)double height;
@end
-
之后person.m 文件 声明两个方法 一个写 一个读
#import "JPerson.h"
@implementation JPerson
#pragma mark 将对象归档的时候会调用(将对象写入文件前会调用)
//在这个方法说清楚
//哪些属性需要存储
//怎样存储这些属性
- (void)encodeWithCoder:(NSCoder *)encoder
{
//将_name属性进行编码
[encoder encodeObject:_name forKey:@"name"];
[encoder encodeInt:_age forKey:@"age"];
[encoder encodeDouble:_height forKey:@"height"];
}
#pragma mark 当从对象中解析时 调用。
//这个方法说清楚
//1.哪些属性需要解析
//2,怎样解析这些属性
-(id)initWithCoder:(NSCoder *)decode
{
if (self = [super init]) {
_name = [decode decodeObjectForKey:@"name"];
_age = [decode decodeIntForKey:@"age"];
_height = [decode decodeDoubleForKey:@"height"];
}
return self;
}
@end
-
在 你需要读写的 .m 文件下实现
这里 是在点击按钮的时候 实现
- (IBAction)Write {
JPerson *p = [[JPerson alloc]init];
p.name = @"jin";
p.age = 10;
p.height = 176.0;
//有个类 键值编码
NSString *path = @"/Users/macbookair/Desktop/person.data";
//归档
[NSKeyedArchiver archiveRootObject:p toFile:path];
}
- (IBAction)read {
NSString *path = @"/Users/macbookair/Desktop/person.data";
//读档 (反归档)
JPerson *p = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
NSLog(@"%@--%d---%f",p.name ,p.age ,p.height);
}
-
ok 查看 输出 :