Snail—OC学习之本地数据持久化(归档)

来源:互联网 发布:蚁群算法基本步骤 编辑:程序博客网 时间:2024/05/21 09:31
#import <Foundation/Foundation.h>#import "Dog.h"int main(int argc, const char * argv[]){    @autoreleasepool {                NSString * filePath = @"/Users/student/Desktop/snail/array.data";                //对官方类创建的对象进行存储        NSArray * array = @[@"one",@"two",@"three"];                //-------------------------归档--------------------------        //将array归档为文件 后缀一般为.data  .data文件是二进制文件 打不开        /*         参数         第一个参数 归档的对象         第二个参数 文件的路径         */        [NSKeyedArchiver archiveRootObject:array toFile:filePath];                        //-------------------------解档--------------------------        NSArray * arr = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];        /*         (         one,         two,         three         )         */        NSLog(@"%@",arr);                                //------------对自定义类型的对象进行归、解档-----------------        /*         对自定义类型的对象进行归档时,需要实现一个协议(NSCoding),并且实现协议中得方法         新建一个dog类 里面有名字name和age属性         */        NSString * dogPath = @"/Users/student/Desktop/snail/dog.data";        Dog * dog = [[Dog alloc] init];        dog.name = @"刀刀";        dog.age = 23;                //----------------------归档--------------------        BOOL ret1 = [NSKeyedArchiver archiveRootObject:dog toFile:dogPath];        if (ret1) {            NSLog(@"归档成功");        }else{            NSLog(@"失败");        }                //----------------------解档--------------------        Dog * dog1 = [NSKeyedUnarchiver unarchiveObjectWithFile:dogPath];        NSLog(@"%@",dog1.name);    }    return 0;}


Dog.h

#import <Foundation/Foundation.h>//NSCoding 实现这个协议@interface Dog : NSObject <NSCoding>@property NSString * name;@property int age;@end

Dog.m

#import "Dog.h"@implementation Dog//归档自定义对象时调用的方法- (void)encodeWithCoder:(NSCoder *)aCoder{        //key的值是可以随便写的 但是在解档的方法里 要跟key的值一样的        //name是NSString类型 用encodeObject方法    [aCoder encodeObject:self.name forKey:@"NAME"];    //age是int类型,用encodeInt方法    [aCoder encodeInt:self.age forKey:@"AGE"];}//解档自定义对象时调用的方法- (id)initWithCoder:(NSCoder *)aDecoder{        if (self = [super init]) {        self.name = [aDecoder decodeObjectForKey:@"NAME"];        self.age = [aDecoder decodeIntForKey:@"AGE"];    }    return self;}




0 0
原创粉丝点击