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 <objc/runtime.h>

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

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];
}

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

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

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

望与君有助。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 都说女人善变,我觉得纯属扯淡!女人如果开始了新的感情,对于前男友的任何动态都不会放在心上,甚至冷酷得如同陌生人一样...
    啾啾fing阅读 284评论 0 0
  • 新春佳节,吃喝玩乐大拜年,我有个神厨老妈,儿有个神厨外婆真是幸福赚大发了。现向大家推出几款好吃又营养的家宴菜式,家...
    暖手清茶阳光明媚阅读 424评论 0 1
  • Hello,大家好...
    神奇蚂蚁阅读 150评论 0 0
  • 最近这些工作日,每天都很规律,早起,送孩子上学,回来收拾屋子,干些零碎的家务,接孩子放学,放风,上课,哄睡。生活平...
    娜姐随手记阅读 624评论 1 51