美文网首页
(个人笔记)RunTime 简单实现归档解档

(个人笔记)RunTime 简单实现归档解档

作者: 飞奔的猪 | 来源:发表于2017-06-19 16:33 被阅读6次

    个人笔记

    就是懒,不想每次有新数据添加的时候,都要进行归档解档操作

    //归档

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

    unsignedintcount =0;

    //使用class_copyIvarList 获取到 UserInfo 类里面的属性,(.h文件和.m文件里面的都能得到)

    Ivar* ivars =class_copyIvarList([UserInfo class], &count);

    //遍历数量

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

    //取出对应的Ivar

    Ivarivar = ivars[i];

    //拿到名称

    constchar* name =ivar_getName(ivar);

    //OC字符串

    NSString* key = [NSStringstringWithUTF8String:name];

    //归档

    [coderencodeObject:[selfvalueForKey:key]forKey:key];}}

    //解档 跟上面的是一个意思

    - (instancetype)initWithCoder:(NSCoder*)coder

    {

    if(self= [superinit]) {

    //属性的个数

    unsignedintcount =0;

    Ivar* ivars =class_copyIvarList([UserInfoclass], &count);

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

    //取出对应的Ivar

    Ivarivar = ivars[i];

    //拿到名称

    constchar* name =ivar_getName(ivar);

    //OC字符串

    NSString* key = [NSString stringWithUTF8String:name];

    //解档

    idvalue = [coder  decodeObjectForKey:key];

    //KVC--设置值到属性上面!!!

    [self setValue:value forKey:key];

    }}

    returnself;

    }

    /**

    *保存用户信息

    */

    -(void)saveUserInfo

    {

    //沙盒

    NSString* temp =NSTemporaryDirectory();

    NSString* filePath = [temp stringByAppendingPathComponent:@"userInfo.yt"];

    //归档

    [NSKeyedArchiver archiveRootObject:self toFile:filePath];

    }

    //至于用户退出 清空数据  同样是遍历 只不过将value设置为空就好了

    相关文章

      网友评论

          本文标题:(个人笔记)RunTime 简单实现归档解档

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