快速归档解档

来源:互联网 发布:mysql ifnull 编辑:程序博客网 时间:2024/04/29 16:47

创建一个BaseModel类,所有的对象都继承这个BaseModel就可以了。附上BaseModel代码

#import "BaseModel.h"

#import <objc/runtime.h>

@implementation BaseModel


- (id)initWithCoder:(NSCoder *)aDecoder{

    

    if (self = [superinit]) {

        Class c = self.class;

        while (c && c != [NSObjectclass]) {

            unsigned int count = 0;

            Ivar *ivars = class_copyIvarList(c, &count);

            for (int i =0; i < count; i++) {

                

                NSString *key = [NSStringstringWithUTF8String:ivar_getName(ivars[i])];

                

                id value = [aDecoder decodeObjectForKey:key];

                

                [self setValue:value forKey:key];

                

            }

            c = [c superclass];

            free(ivars);

        }

        

        

    }

    return self;

}


- (void)encodeWithCoder:(NSCoder *)aCoder{


    Class c = self.class;

    while (c && c != [NSObjectclass]) {

        unsigned int count =0;

        

        Ivar *ivars = class_copyIvarList(c, &count);

        

        for (int i =0; i < count; i++) {

            Ivar ivar = ivars[i];

            NSString *key = [NSStringstringWithUTF8String:ivar_getName(ivar)];

            

            id value = [selfvalueForKey:key];

            

            [aCoder encodeObject:value forKey:key];

        }

        c = [c superclass];

        free(ivars);

    }

    

}



@end


0 0