将下班,余些许时间,闲来无事,偶忆他人询归解档之简法,故作小结,祈与君有助。
闲言简之,此为寻代码之处。
用法简介之:
1、移以下类别于君项目中。
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];
}
属性遍历之,以归档之法逐一适之。
反之解档相似也,唯寻属性逐一解之。
望与君有助。