美文网首页
Runtime应用----归档/解档

Runtime应用----归档/解档

作者: iOS_渔翁 | 来源:发表于2017-11-09 17:37 被阅读2次

    优先导入头文件

    import <objc/runtime.h>

    - (void)encodeWithCoder:(NSCoder *)aCoder {
        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 stringWithUTF8String:name];
            //归档
            [aCoder encodeObject:[self valueForKey:key] forKey:key];
        }
        free(ivars);
    }
    
    
    - (instancetype)initWithCoder:(NSCoder *)aDecoder {
        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 stringWithUTF8String:name];
                //反归档
                id value = [aDecoder decodeObjectForKey:key];
                //设置到成员变量身上
                [self setValue:value forKey:key];
                
            }
            free(ivars);
        }
        return self;
    }
    

    相关文章

      网友评论

          本文标题:Runtime应用----归档/解档

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