main.m
#import <Foundation/Foundation.h>atom
#import "FJPerson.h"spa
#import "FJCar.h".net
#define PATH @"/Users/IOS1601/Desktop/plist文件/personCar"3d
//若是须要归档的对象的属性中又另一个类的对象,让两个类code
//都遵照NSCoding协议而且实现协议的方法,去归档和解归档相应的属性;orm
int main(int argc, const char * argv[]) {对象
@autoreleasepool {get
FJPerson *person = [[FJPerson alloc]init];it
person.name = @"fanjuan";io
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;
}
#pragma mark 归档
FJCar.h
#import <Foundation/Foundation.h>
@interface FJCar : NSObject <NSCoding>
//颜色
@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 <Foundation/Foundation.h>
@class FJCar;
@interface FJPerson : NSObject <NSCoding>
//姓名
@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