先新建一个Person类
定义三个属性
@interface Person : NSObject <NSCoding>
@property (strong,nonatomic) NSString *name;
@property (assign,nonatomic) NSInteger age;
@property (assign,nonatomic) double height;
@end
在.m文件中实现两个方法
/**
* 解档
*/
-(instancetype)initWithCoder:(NSCoder *)aDecoder
{
self = [super init];
if (self) {
self.name = [aDecoder decodeObjectForKey:@"name"];
self.age = [[aDecoder decodeObjectForKey:@"age"] integerValue];
self.height = [[aDecoder decodeObjectForKey:@"height"] doubleValue];
}
return self;
}
/**
* 归档
*/
-(void)encodeWithCoder:(NSCoder *)aCoder
{
[aCoder encodeObject:self.name forKey:@"name"];
[aCoder encodeInteger:self.age forKey:@"age"];
[aCoder encodeDouble:self.height forKey:@"height"];
}
在别的文件中进行操作
/**
* 1、创建数据时进行归档
* 2、读取数据时进行解档
*/
-(void)fileOperation
{
NSFileManager *filemangeer=[NSFileManager defaultManager];
BOOL isExist = [filemangeer fileExistsAtPath:[self fileName]];
if (!isExist) {
self.person = [[Person alloc]init];
self.person.name = @"zhangm";
self.person.age = 18;
self.person.height = 183;
[NSKeyedArchiver archiveRootObject:self.person toFile:[self fileName]];
}
else{
self.person = [NSKeyedUnarchiver unarchiveObjectWithFile:[self fileName]];
}
NSLog(@"%@",self.person.name);
}
/**
* 读取文件
*/
-(NSString *)fileName
{
NSArray *array=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *file=[array lastObject];
NSString *filepath=[file stringByAppendingPathComponent:@"sub.Archive"];
return filepath;
}