iOS study Day15-自定义文件的解档和归档

来源:互联网 发布:微店和淘宝店什么好卖 编辑:程序博客网 时间:2024/04/29 06:54

1. 归档

假设有两个类 Company 和CompanyBook

        //        建立三个Company对象        Company* comp1 = [[Company alloc] initWithName:@"周大福" andId:1 andGongye:NO andXiao:NO andG:@"330121195501156625" andD:@"HZZDF"];        Company* comp2 = [[Company alloc] initWithName:@"杭萧钢构" andId:2 andGongye:NO andXiao:NO andG:@"330121195501156626" andD:@"HXSS"];        Company* comp3 = [[Company alloc] initWithName:@"浙大网新" andId:3 andGongye:NO andXiao:NO andG:@"330121195501156628" andD:@"INSIGMA"];        //        加入CompanyBook类中        CompanyBook* book1 = [[CompanyBook alloc] initWithName];        [book1 addCompany:comp1];        [book1 addCompany:comp2];        [book1 addCompany:comp3];        NSLog(@"%@",book1);        //二、自定义类Companybook 的归档        NSString* homepath = [NSSearchPathForDirectoriesInDomains(NSDesktopDirectory, NSUserDomainMask, YES) lastObject];        NSString* path = [homepath stringByAppendingPathComponent:@"wjac.acv"];        if([NSKeyedArchiver archiveRootObject:book1 toFile:path])            NSLog(@"writing success!");

2 .解档

        //二、自定义类Companybook 的解档        NSString* homepath = [NSSearchPathForDirectoriesInDomains(NSDesktopDirectory, NSUserDomainMask, YES) lastObject];        NSString* path = [homepath stringByAppendingPathComponent:@"wjac.acv"];        CompanyBook* book1 = [NSKeyedUnarchiver unarchiveObjectWithFile:path];        NSLog(@"comp1:%@",book1);

此时的CompanyBook的头文件应当是这样子

@interface CompanyBook : NSObject<NSCoding>

实现文件要有两个方法需要实现(假设该类有一个属性NSMutableArray * comArray)

- (void)encodeWithCoder:(NSCoder *)aCoder{    [aCoder encodeObject:comArray forKey:@"arraylist"];    }- (id)initWithCoder:(NSCoder *)aDecoder{    if (self = [super init]) {        comArray = [aDecoder decodeObjectForKey:@"arraylist"];    }    return self;}

0 0