iOS数据存储-NSUserDefaults

NSUserDefaults适合存储轻量级的本地数据。支持存储的数据类型有:NSNumber(NSInteger、float、double)、NSString、NSDate、NSArray、NSDictionary、BOOL。

NSUserDefaults是一个单例,以key-value的形式存储数据。下面以代码形式展示其用法:
<pre> //将对象存储到NSUserDefaults中 NSString *userName = @"Tom"; NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; [userDefault setObject:userName forKey:@"userNameString"]; [userDefault synchronise]; </pre>
<pre> //取出数据 NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; NSString *userName = [ userDefault objectForKey:@"userNameString"]; </pre>


不同类型数据存储方式
不同类型数据存储方式 code
对象 - setObject: forKey:
布尔值 - setBool: forKey:
浮点值 - setFloat: forKey:
整数值 - setInteger: forKey:
双精度 - setDouble: forKey:
URL值 - setURL: forKey:

注意:

  • NSUserDefaults中要保证每个Key的唯一性,如果对相同的key重复赋值,会覆盖旧值。
  • NSUserDefaults 存储的对象是不可变的(例如NSMutableArray、NSMutableDictionary等是不可以存储的)。
  • 调用[[NSUserDefaults standardUserDefaults] synchronize]是立即更新存储,避免数据丢失,这个方法会在系统中默认调用。

下面给出几种常用的应用场景:

  • 以字符串形式存储当前时间
    NSDate *currentDate = [NSDate date]; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"YYYY/MM/dd hh:mm:ss SS"]; NSString *dateString = [dateFormatter stringFromDate:currentDate]; NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; [userDefault setObject:dateString forKey:@"currentTime"];
  • 存储整数
    NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; [userDefault setInteger:100 forKey:@"Integer"];
  • 存储图片
    UIImage *image =[UIImage imageNamed:@"example"]; NSData *imageData = UIImageJPEGRepresentation(image, 100); NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; [userDefault setObject:imageData forKey:@"image"];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容