当你的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{
//获取user的data数据
NSData *unarchiveData = [[NSUserDefaultsstandardUserDefaults] objectForKey:@"DefaultsUser"];
if(unarchiveData == nil){
return nil;
}
//执行二进制反编译
User *u = [NSKeyedUnarchiverunarchiveObjectWithData:unarchiveData];
return u;
}