个人对于归档的初级理解

来源:互联网 发布:瓦尔特磨床编程网 编辑:程序博客网 时间:2024/04/28 13:07
- (void)viewDidLoad {    [super viewDidLoad];        NSString *str = @"abc";    [NSKeyedArchiver archiveRootObject:str toFile:@"/Users/apple/Desktop/test.plist"];        NSString *str1 = [NSKeyedUnarchiver unarchiveObjectWithFile:@"/Users/apple/Desktop/test.plist"];    NSLog(@"%@", str1);        Student *stu = [[Student alloc] init];    stu.name = @"Zhangsan";    stu.age = 30;    [NSKeyedArchiver archiveRootObject:stu toFile:@"/Users/apple/Desktop/student.plist"];        Student *stu1 = [NSKeyedUnarchiver unarchiveObjectWithFile:@"/Users/apple/Desktop/student.plist"];    NSLog(@"%p, %p", stu, stu1);    NSLog(@"%@:%d, %@:%d", stu.name, stu.age, stu1.name, stu1.age);        NSData *stuData = [NSKeyedArchiver archivedDataWithRootObject:stu];    [stuData writeToFile:@"/Users/apple/Desktop/stu.plist" atomically:YES];        NSData *stuData2 = [NSData dataWithContentsOfFile:@"/Users/apple/Desktop/stu.plist"];    Student *stu3 = [NSKeyedUnarchiver unarchiveObjectWithData:stuData2];    NSLog(@"%@:%d---%@:%d", stu.name, stu.age, stu3.name, stu3.age);        NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];    [userDefault setObject:stuData forKey:@"xxxx"];    NSData *stuData3 = [userDefault objectForKey:@"xxxx"];    Student *stu4 = [NSKeyedUnarchiver unarchiveObjectWithData:stuData3];    NSLog(@"%@:%d", stu4.name, stu4.age);        stu4.dog = [[Dog alloc] init];    stu4.dog.name = @"小强";    [NSKeyedArchiver archiveRootObject:stu4 toFile:@"/Users/apple/Desktop/dog.plist"];}

 要记住一点的就是,当对自定义的类使用归档的话,必须除了先协议委托<NScoding>这个协议之外,同时在.m中实现NScoding中的两个required方法

- (void)encodeWithCoder:(NSCoder *)aCoder{    [aCoder encodeObject:_name forKey:kNameKey];    [aCoder encodeInteger:_age forKey:kAgeKey];    [aCoder encodeObject:_dog forKey:kDogKey];}- (id)initWithCoder:(NSCoder *)aDecoder{    self = [super init];    if (self) {        self.name = [aDecoder decodeObjectForKey:kNameKey];        self.age = [aDecoder decodeIntegerForKey:kAgeKey];        self.dog = [aDecoder decodeObjectForKey:kDogKey];    }        return self;}


0 0
原创粉丝点击