FJStudent.h
#import <Foundation/Foundation.h>
@interface FJStudent : NSObject <NSCoding>
@property (nonatomic,copy) NSString *name;
@property (nonatomic,assign) int score;
FJStudent.m
#import "FJStudent.h"
@implementation FJStudent
- (void)encodeWithCoder:(NSCoder *)aCoder{
[aCoder encodeObject:_name forKey:@"name"];
[aCoder encodeInt:_score forKey:@"score"];
}
- (instancetype ) initWithCoder:(NSCoder *)aDecoder{
if (self = [super init]) {
_name = [aDecoder decodeObjectForKey:@"name"];
_score = [aDecoder decodeIntForKey:@"score"];
}
return self;
}
- (NSString *)description{
return [NSString stringWithFormat:@"%@ %d",_name,_score];
}
@end
main.m
#import <Foundation/Foundation.h>
#import "FJStudent.h"
#define path @"/Users/IOS1601/Desktop/plist文件/student"
void achiver();
void unAchiver();
int main(int argc, const char * argv[]) {
@autoreleasepool {
achiver();
unAchiver();
}
return 0;
}
#pragma mark -归档
void achiver(){
NSMutableArray *studentArray = [[NSMutableArray alloc]init];
for (int i=0; i<20; i++) {
FJStudent *stu = [[FJStudent alloc] init];
stu.name = [NSString stringWithFormat:@"name%d",i];
stu.score = arc4random() % 56 + 15;
[studentArray addObject:stu];
}
// //=======归档过程1=========
// //1.创建一个可变的mdata
// NSMutableData *mdata = [[NSMutableData alloc]init];
//
// //2.创建一个归档工具
// NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc]
// initForWritingWithMutableData:mdata];
//
// //3.归档,将数组进行归档
// [archiver encodeObject:studentArray forKey:@"array"];
//
// //4.关闭归档
// [archiver finishEncoding];
//
// //5.写入本地文件
// [mdata writeToFile:path atomically:NO];
//=============归档过程2============
//参数一:需要归档的对象
//参数二:归档的路径
[NSKeyedArchiver archiveRootObject:studentArray toFile:path];
}
#pragma mark -解归档
void unAchiver(){
// //=========解归档的过程1=============
// //1.创建一个NSData
// NSData *data = [[NSData alloc]initWithContentsOfFile:path];
//
// //2.创建一个解归档工具
// NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc]
// initForReadingWithData:data];
//
// //3.解归档
// NSArray * studentArray = [unarchiver
// decodeObjectForKey:@"array"];
//
// //4.关闭归档工具
// [unarchiver finishDecoding];
//
// NSLog(@"%@",studentArray);
//=========解归档的过程2=============
//参数:需要解归档文件的路径;
NSArray *studentArray = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
NSLog(@"%@",studentArray);
}