NSUserDefaults存储用户数据到本地

来源:互联网 发布:雨燕轮毂数据 编辑:程序博客网 时间:2024/05/17 03:04

NSUserDefaults存储用户数据到本地

NSUserDefaults是一个单例,在整个程序中只有一个实例对象,他可以用于数据的永久保存,而且简单实用,这是它可以让数据自由传递的一个前提,也是大家喜欢用它保存简单数据的一个主要原因。

适合存储轻量级的本地数据,比如要保存一个登陆界面的数据,用户名、密码之类的,个人觉得使用NSUserDefaults是首选。

NSUserDefaults支持的数据类型有:NSNumber(NSInteger、float、double),NSString,NSDate,NSArray,NSDictionary,BOOL.

根据自己的所做的项目,使用NSUserDefaults存储了一个自定对象.首先在模型类.h里面继承NSCoding

@interface PersonModel : NSObject <NSCoding>/** 昵称 */@property (nonatomic,copy) NSString *nickname;/** 性别 */@property (nonatomic,copy) NSString *sex;/** 头像 */@property (nonatomic,copy) NSString *headimgurl;@end

在.m文件实现如下两个方法:

@implementation PersonModel- (void)encodeWithCoder:(NSCoder *)aCoder {       [aCoder encodeObject:self.nickname forKey:@"nickname"];    [aCoder encodeObject:self.sex forKey:@"sex"];    [aCoder encodeObject:self.headimgurl forKey:@"headimgurl"];   }- (instancetype)initWithCoder:(NSCoder *)aDecoder {    if (self = [super init]) {                self.nickname = [aDecoder decodeObjectForKey:@"nickname"];        self.sex = [aDecoder decodeObjectForKey:@"sex"];        self.headimgurl = [aDecoder decodeObjectForKey:@"headimgurl"];         }    return self;}@end

存储:

 // 存储用户数据到本地 // self.user 是模型    self.user = [PersonModel mj_objectWithKeyValues:response[@"data"]];    NSData *userData = [NSKeyedArchiver archivedDataWithRootObject:self.personModel];    [defaults setObject:userData forKey:@"userData"];    [defaults synchronize];

读取数据

  // 读取本地数据    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];    NSData *userData = [defaults dataForKey:@"userData"];    self.user = [NSKeyedUnarchiver unarchiveObjectWithData:userData];    if (!self.user) { // 如果没有存储到本地,则加载网络请求数据    // 这里写保存到本地    }

关于NSUserDefaults更多的用法可以参考简书http://www.jianshu.com/p/459c15cf6ce2

0 0
原创粉丝点击