iOS数据存储-NSUserDefaults

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

NSUserDefaults是一个单例,以key-value的形式存储数据。下面以代码形式展示其用法:

 //将对象存储到NSUserDefaults中 NSString *userName = @"Tom"; NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; [userDefault setObject:userName forKey:@"userNameString"]; [userDefault synchronise]; 

 //取出数据 NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; NSString *userName = [ userDefault objectForKey:@"userNameString"]; 


不同类型数据存储方式
不同类型数据存储方式 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"];

你可能感兴趣的:(iOS数据存储-NSUserDefaults)