关闭

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

标签: 数据appios开发NSUserDefaults二进制
258人阅读 评论(0) 收藏 举报

当你的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._userName forKey:@"userName"];


}

//解码

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

    self=[super init];

    if (self) {

        self._userName=[aDecoder decodeObjectForKey:@"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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:34110次
    • 积分:600
    • 等级:
    • 排名:千里之外
    • 原创:23篇
    • 转载:20篇
    • 译文:1篇
    • 评论:0条