OC 여러 객체의 아카이빙 및 아카이빙

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);
}

좋은 웹페이지 즐겨찾기