OC 압축 파일의 대상에는 다른 종류의 속성이 포함되어 있습니다!

2670 단어 OC 아카이빙
main.m

#import
#import "FJPerson.h"
#import "FJCar.h"
#define PATH@"/Users/IOS1601/Desktop/plist 파일/personCar"
//압축된 대상의 속성 중 또 다른 클래스가 필요한 대상은 두 클래스로
//모두 NSCoding 프로토콜을 준수하고 프로토콜을 실현하는 방법으로 해당하는 속성을 압축하고 압축한다.
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        FJPerson *person = [[FJPerson alloc]init];
        person.name = @"fanjuan";
    
        FJCar *car = [[FJCar alloc]init];
        car.color = @"yellow";
        car.price = 77777777;
        person.car = car;
        
//아카이빙
        
    //  [NSKeyedArchiver archiveRootObject:person
      //toFile:PATH];
        
    FJPerson *p = [NSKeyedUnarchiver unarchiveObjectWithFile:PATH];
        
NSLog(@"차주%@차색%@차가격%.2lf", p.name, p.car.color, p.car.price);
    }
    return 0;
}
#pragmark 아카이브
FJCar.h
#import
@interface FJCar : NSObject
//색상
@property (nonatomic,copy) NSString *color;
//가격
@property (nonatomic,assign) double price;
@end
FJCar.m
#import "FJCar.h"
@implementation FJCar
- (void)encodeWithCoder:(NSCoder *)aCoder{
    
    [aCoder encodeObject:_color forKey:@"color"];
    
    [aCoder encodeDouble:_price forKey:@"price"];
    
}
- (instancetype) initWithCoder:(NSCoder *)aDecoder{
    if(self = [super init]){
    _color = [aDecoder decodeObjectForKey:@"color"];
    
    _price = [aDecoder decodeDoubleForKey:@"price"];
    }
    return self;
}
@end
FJPerson.h
#import
@class FJCar;
@interface FJPerson : NSObject
//이름
@property (nonatomic,copy) NSString *name;
//차
@property (nonatomic,strong) FJCar *car;
@end
FJCar.m
#import "FJCar.h"
@implementation FJCar
- (void)encodeWithCoder:(NSCoder *)aCoder{
    
    [aCoder encodeObject:_color forKey:@"color"];
    
    [aCoder encodeDouble:_price forKey:@"price"];
    
}
- (instancetype) initWithCoder:(NSCoder *)aDecoder{
    if(self = [super init]){
    _color = [aDecoder decodeObjectForKey:@"color"];
    
    _price = [aDecoder decodeDoubleForKey:@"price"];
    }
    return self;
}
@end

좋은 웹페이지 즐겨찾기