iOS对象归档解档-运行时方案

将下班,余些许时间,闲来无事,偶忆他人询归解档之简法,故作小结,祈与君有助。

闲言简之,此为寻代码之处。

用法简介之:

1、移以下类别于君项目中。

image

2、无它操作,遂心将类对象归解档之。

3、做归解档演示状:

归档:

    //创建需要归档的对象

    Car *car = [[Car alloc] init];

    car.brand = @"BMW";

    car.color = [UIColor redColor];


    //归档文件路径

    NSString *filePath = [DOCUMENTSDIR stringByAppendingPathComponent:FILENAME];

    //归档

    [NSKeyedArchiver archiveRootObject:car toFile:filePath];

解档:

    //解档文件路径

    NSString *filePath = [DOCUMENTSDIR stringByAppendingPathComponent:FILENAME];

    //解档

    Car *car = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];

原理简介之

@interface NSObject (Archive)
#import 

于基类作之,运行时助之,子类广适之。

unsigned int ivarsCount = 0;
Ivar *ivars = class_copyIvarList([self class], &ivarsCount);

运行时助寻类之属性。

for (int i = 0; i < ivarsCount; i++) {
    NSString *key = [NSString stringWithUTF8String:ivar_getName(ivars[i])];
    [coder encodeObject:[self valueForKey:key] forKey:key];
}

属性遍历之,以归档之法逐一适之。

反之解档相似也,唯寻属性逐一解之。

代码寥寥,君可下载阅之。

望与君有助。

你可能感兴趣的:(iOS对象归档解档-运行时方案)