首页 > 代码库 > iOS 数据持久化之使用NSUserDefaults存储数据
iOS 数据持久化之使用NSUserDefaults存储数据
1.用处:NSUserDefaults用来存储类似用户的配置、程序设置信息等这些的数据
iOS下可以使用NSUserDefault、NSKeyedArchiver、sqlite、CoreData几种常用的方式来存储数据,其中NSUserDefaults用来存储类似用户的配置等这些的数据,后两者用户存储大批量和比较复杂的数据。
NSUserDefault 基本上支持所有的原生数据类型NSString、 NSNumber、NSDate、 NSArray、NSDictionary、BOOL、NSInteger、NSFloat等等。如果要存放自定义的对象(如自定义的类对象),则必须将其转换成NSData存储。
2.用法:
NSUserDefault的使用比较简单:
A类页面:
NSUserDefaults *userDefault = [NSUserDefaultsstandardUserDefaults];
[userDefault setObject:@“北京” forKey:LASTCITY];
[userDefault synchronize];
B类页面:
NSUserDefaults *userDefault = [NSUserDefaultsstandardUserDefaults];
NSString *lastCity = [userDefault objectForKey:LASTCITY];
3.细节用法:
如果要存放自定义的对象(如自定义的类对象),则必须将其转换成NSData存储:
- NSArray *arr = [[NSArray alloc] initWithObjects:@"arr1", @"arr2", nil]
- [mySettingData setObject:arr forKey:@"arrItem"];
- [mySettingData setObject:@"admin" forKey:@"user_name"];
- [mySettingData setBOOL:@YES forKey:@"auto_login"];
- [mySettingData setInteger:1 forKey:@"count"];
往NSUserDefaults添加数据后,它们就变成了全局的变量,App中即可读写NSUserDefault中的数据:
- NSUserDefaults *mySettingDataR = [NSUserDefaults standardUserDefaults];
- NSLog(@"arrItem=%@", [mySettingDataR objectForKey:@"arrItem"]);
- NSLog(@"user_name=%@", [mySettingDataR objectForKey:@"user_name"]);
- NSLog(@"count=%d", [mySettingDataR integerForKey:@"count"]);
如果想删除某个数据项,可以使用removeObjectForKey删除数据:
- [mySettingData removeObjectForKey:@"arrItem"];
- [mySettingData synchronize];
4、针对同一个关键字对应的对象或者数据,可以对它进行重写,重写之后关键字就对应新的对象或者数据,旧的对象或者数据会被自动清理。
iOS 数据持久化之使用NSUserDefaults存储数据