美文网首页
RunTime-自动归档方法

RunTime-自动归档方法

作者: 天涯人1949 | 来源:发表于2017-03-03 14:33 被阅读0次

注意,实现NSCoding协议不能使用extension,因为指定构造器不能声明在extension中

#import <Foundation/Foundation.h>
//实现NSCoding协议
@interface RTAutoArchive : NSObject<NSCoding>

@end
#import "RTAutoArchive.h"
#import <objc/runtime.h>

@implementation RTAutoArchive

- (void)encodeWithCoder:(NSCoder *)encoder
{
    unsigned int count = 0;
    //实例变量的列表
    Ivar *ivars = class_copyIvarList([self class], &count);
    for (int i = 0; i < count; i ++) {
        //取出i位置对应的实例变量
        Ivar ivar = ivars[i];
        //查看实例变量的名字
        const char *name = ivar_getName(ivar);
        //转化为NSString
        NSString *nameStr = [NSString stringWithCString:name encoding:NSUTF8StringEncoding];
        //利用KVC取出属性对应的值
        id value = [self valueForKey:nameStr];
        //归档
        [encoder encodeObject:value forKey:nameStr];
    }
    //释放
    free(ivars);
    
}

- (id)initWithCoder:(NSCoder *)decoder
{
    if (self = [super init]) {
        unsigned int count = 0;
        Ivar *ivars = class_copyIvarList([self class], &count);
        for (int i = 0; i < count; i ++) {
            Ivar ivar = ivars[i];
            const char *name = ivar_getName(ivar);
            NSString *key = [NSString stringWithCString:name encoding:NSUTF8StringEncoding];
            id value = [decoder decodeObjectForKey:key];
            //设值
            [self setValue:value forKey:key];
        }
        
        free(ivars);
    }
    return self;
}

@end

相关文章

  • RunTime-自动归档方法

    注意,实现NSCoding协议不能使用extension,因为指定构造器不能声明在extension中

  • Runtime-原理

    runtime初探对象与方法的本质runtime-消息发送runtime-动态方法解析runtime-消息转发 r...

  • IOS开发实用技巧(一)

    1.调试技巧重写description方法打印类的成员属性 2.自动归档解档

  • Oracle归档日志

    显示归档日志信息 1,使用ARCHIVE LOG LIST命令可以显示日志操作模式,归档位置,自动归档机器要归档的...

  • 字典转模型

    上篇讲了怎么实现模型自动解归档的方法接下来讲一下怎么实现自动对复杂的字典进行转模型操作 具体封装了两个方法 1) ...

  • Runtime-方法

    01class的结构 元类对象和元类的结构是一样的,他是一种特殊的类对象 class_rw_t里面的methods...

  • runtime-整理中

    runtime-整理中

  • runtime自动归档

    前言 善用runtime,可以解决自动归档解档。想想以前归档是手动写的,确实太麻烦了。现在有了runtime,我们...

  • 自动解归档

    ios应用常用的数据存储方式 plist(XML属性列表归档) 偏好设置NSUserDefault NSKeyde...

  • runtime 自动归档

    提到归档这块,首先得看了一下,常规的归档方法(又名序列化),把对象转为字节码,以文件的形式存储到磁盘上;程序运行过...

网友评论

      本文标题:RunTime-自动归档方法

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