美文网首页
归档、解档

归档、解档

作者: hie | 来源:发表于2018-09-11 17:29 被阅读0次

1.创建类 ZFPerson,遵循协议 NSCoding

@interface ZFPerson : NSObject<NSCoding>

@property(strong ,nonatomic) NSString *name;

@property(assign ,nonatomic) int age;

@end


2.ZFPerson类实现协议方法

- (void)encodeWithCoder:(NSCoder*)aCoder{

    //存储成员变量个数

    unsigned int count =0;

    //获取成员变量

    Ivar*vars = class_copyIvarList([self class], &count);

    //遍历成员变量

    for(int i =0; i < count; i++) {

        Ivarivar = vars[i];

        //变量名

        const char * name = ivar_getName(ivar);

        //变量名转成utf-8

        NSString * key = [NSString stringWithUTF8String:name];

        //获取value

        id value = [self valueForKey:key];

        [aCoder encodeObject:value forKey:key];

    }

    //释放

    free(vars);

}

- (instancetype)initWithCoder:(NSCoder*)aDecoder{

    if(self= [super init]) {

        //存储成员变量个数

        unsigned int count =0;

        //获取成员变量

        Ivar * vars = class_copyIvarList([self class], &count);

        //遍历成员变量

        for(int i =0; i < count; i++) {

            Ivar ivar = vars[i];

            //变量名

            const char * name = ivar_getName(ivar);

            //变量名转成utf-8

            NSString * key = [NSString stringWithUTF8String:name];

            //获取value

            id value = [aDecoder decodeObjectForKey:key];

            [self setValue:value forKey:key];

        }

        //释放

        free(vars);

    }

    return self;

}


3.调用

- (void)archive{

    ZFPerson *p = [ZFPerson new];

    p.name=@"Cat";

    p.age=18;

    //归档路径

    NSString *path = [NSString stringWithFormat:@"%@/archiver.plist",NSHomeDirectory()];

    //归档

    [NSKeyedArchiver archiveRootObject:p toFile:path];

    //解档

    ZFPerson *p2 = [NSKeyedUnarchiver unarchiveObjectWithFile:path];

    NSLog(@"name=%@,age=%d",p2.name,p2.age);

}

相关文章

  • ios中Swift的归档与解档

    ios中Swift的归档与解档 归档 解档 init()方法 设置属性

  • 归档解档

    归档 解档

  • iOS Runtime应用之自动归档

    归档 解档 end

  • 归档/解档

    一、对系统类进行归档/解档 第一种:对集合类对象进行归档/解档 归档: 解档 方法(1) 方法(2) 第二种:非集...

  • MJExtension归档失败

    MJExtension归档解档奔溃 ,YYMode 归档解档正常的对比由于作者懒得截图,只说明是在[NNObjce...

  • 归档、解档

    1.创建类 ZFPerson,遵循协议NSCoding @interface ZFPerson : NSObjec...

  • 归档/解档

    1.沙盒路径 注意: 0.提供一个在真机情况下查找到沙盒的办法Xcode -> window ->devices找...

  • 归档 & 解档

    1.什么是 归档 和 解档 数据本地存储持久化的一种。归档:对象的序列化,通过某种格式把对象保存成本地文件。解档:...

  • 归档、解档

    我对归档和解档的理解是 归档就是把要保存的内容转成Data之后写入指定的路径中。解档就是把指定路径下的Data转成...

  • iOS 5种数据存储

    1.归档解档 归档 解档 2.NSUserDefaults 时候存储少量基本数据类型,比如Array、Bool、S...

网友评论

      本文标题:归档、解档

      本文链接:https://www.haomeiwen.com/subject/cugugftx.html