OC 여러 객체의 아카이빙 및 아카이빙
3468 단어 여러 객체의 아카이빙 및 아카이빙
FJStudent.h
#import
@interface FJStudent : NSObject
@property (nonatomic,copy) NSString *name;
@property (nonatomic,assign) int score;
@end
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
#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===========
//매개 변수 1: 아카이브가 필요한 객체
//매개 변수 2: 압축 파일의 경로
[NSKeyedArchiver archiveRootObject:studentArray toFile:path];
}
#pragmamark - 아카이브 해제
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);
}