NSUserDefaults 写入及获取用户的自定义数据

来源:互联网 发布:淘宝刷访客有用吗 编辑:程序博客网 时间:2024/06/10 01:54

当你的app被点开的那一刻,就已经和NSUserDefaults结下了不解之缘,这篇文章给出了利用NSUserDefaults保存和提取用户数据的方法

1.偏好数据设置一般都采用这种方法

[[NSUserDefaultsstandardUserDefaults]setObject:id forKey:@""];


2.当需要保存用户的个人资料(姓名,手机号,头像,昵称,,,,,,)等信息数量比较多的时候使用上面的方式就显得有点繁杂了,这时,我们就需要把这些信息定义成一个User或者其他类然后进行保存

例如:设置一个user类 User


a-初始化它

- (id)initWithDictionary:(NSDictionary *)dic{

    self=[superinit];

    if (self) {

        //code

    }

    return self; 

}

在User类中实现<NSCoding>的代理

并实现以下二个方法:

//编码

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

    [aCoder encodeObject:self._userNameforKey:@"userName"];


}

//解码

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

    self=[superinit];

    if (self) {

        self._userName=[aDecoderdecodeObjectForKey:@"userName"];

    }

    return self;

}



b-保存数据到NSUserDefaults

//保存本机user

+ (void)saveDefaultsUser:(User *)u{

    //编译成二进制

    NSData *archiveData = [NSKeyedArchiverarchivedDataWithRootObject:u];

    //保存user到本机

    [[NSUserDefaultsstandardUserDefaults]setObject:archiveDataforKey:@"DefaultsUser"];

    //使内存中的缓存与用户默认系统进行同步

    [[NSUserDefaultsstandardUserDefaults]synchronize];

}


c-需要的时候将其取出

//获取本机user

+ (User *)getDefaultsUser{

    //获取userdata数据

    NSData *unarchiveData = [[NSUserDefaultsstandardUserDefaults]objectForKey:@"DefaultsUser"];

    if(unarchiveData == nil){

        return nil;

    }

    //执行二进制反编译

    User *u = [NSKeyedUnarchiverunarchiveObjectWithData:unarchiveData];

    

    return u;

}



0 0
原创粉丝点击