项目中经常需要保存用户信息,如果希望用户版本升级后,一些信息继续保存不变,比如喜好,主题颜色等,可以使用UserDefaults保存这些信息,最好创建一个类专门管理这些信息。
存储
+ (void)saveData:(NSObject *)object forKey:(NSString *)key{
//把相应的 object 压缩对象成为二进制数据
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:object];
//把压缩好的数据用 KVC 方式保存起来
[[NSUserDefaults standardUserDefaults] setObject:data forKey:key];
[[NSUserDefaults standardUserDefaults] synchronize];
}
其中,方法synchronise是为了强制存储,其实并非必要,因为这个方法会在系统中默认调用,但是你确认需要马上就存储,这样做是可行的。
获取
+ (id)readCacheDataForKey:(NSString *)key{
NSData *cache = [[NSUserDefaults standardUserDefaults] objectForKey:key];
if(cache){
@try{
//用NSKeyedUnarchiver解压二进制数据转为对象
NSObject *object = [NSKeyedUnarchiver unarchiveObjectWithData:cache];
return object;
}
@catch(NSException *exception){
//捕获到错误
}
@finally{
}
}else{
return nil;
}}
删除
+ (void)deleteObjectForKey:(NSString *)key{
[[NSUserDefaults standardUserDefaults] removeObjectForKey:key];
[[NSUserDefaults standardUserDefaults] synchronize];
}