iOS 数据持久化之使用NSUserDefaults存储数据
2014-09-26 15:53
225 查看
1.用处:NSUserDefaults用来存储类似用户的配置、程序设置信息等这些的数据
iOS下可以使用NSUserDefault、NSKeyedArchiver、sqlite、CoreData几种常用的方式来存储数据,其中NSUserDefaults用来存储类似用户的配置等这些的数据,后两者用户存储大批量和比较复杂的数据。
NSUserDefault
基本上支持所有的原生数据类型NSString、 NSNumber、NSDate、 NSArray、NSDictionary、BOOL、NSInteger、NSFloat等等。如果要存放自定义的对象(如自定义的类对象),则必须将其转换成NSData存储。
2.用法:
NSUserDefault的使用比较简单:
A类页面:
NSUserDefaults *userDefault = [NSUserDefaults
standardUserDefaults];
[userDefault setObject:@“北京”
forKey:LASTCITY];
[userDefault synchronize];
B类页面:
NSUserDefaults *userDefault = [NSUserDefaults
standardUserDefaults];
NSString *lastCity = [userDefault
objectForKey:LASTCITY];
3.细节用法:
如果要存放自定义的对象(如自定义的类对象),则必须将其转换成NSData存储:
[cpp] view
plaincopy
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中的数据:
[cpp] view
plaincopy
NSUserDefaults *mySettingDataR = [NSUserDefaults standardUserDefaults];
NSLog(@"arrItem=%@", [mySettingDataR objectForKey:@"arrItem"]);
NSLog(@"user_name=%@", [mySettingDataR objectForKey:@"user_name"]);
NSLog(@"count=%d", [mySettingDataR integerForKey:@"count"]);
如果想删除某个数据项,可以使用removeObjectForKey删除数据:
[cpp] view
plaincopy
[mySettingData removeObjectForKey:@"arrItem"];
需要注意的是,NSUserDefaults是定时把缓存中的数据写入磁盘的,而不是即时写入,为了防止在写完NSUserDefaults后程序退出导致的数据丢失,可以在写入数据后使用synchronize强制立即将数据写入磁盘:
[cpp] view
plaincopy
[mySettingData synchronize];
运行上面的语句后,NSUserDefaults中的数据即被写入到.plist文件中,如果是在模拟器上运行程序,可以在Mac的/Users/YOUR-USERNAME/Library/Application Support/iPhone Simulator/4.1/Applications/YOUR-APP-DIR/Library/Prefereces目录下面找到一个文件名为YOUR-Bundle_Identifier.plist的plist文件,用Xcode打开该文件,可以看到刚才写入的数据。
4、针对同一个关键字对应的对象或者数据,可以对它进行重写,重写之后关键字就对应新的对象或者数据,旧的对象或者数据会被自动清理。
iOS下可以使用NSUserDefault、NSKeyedArchiver、sqlite、CoreData几种常用的方式来存储数据,其中NSUserDefaults用来存储类似用户的配置等这些的数据,后两者用户存储大批量和比较复杂的数据。
NSUserDefault
基本上支持所有的原生数据类型NSString、 NSNumber、NSDate、 NSArray、NSDictionary、BOOL、NSInteger、NSFloat等等。如果要存放自定义的对象(如自定义的类对象),则必须将其转换成NSData存储。
2.用法:
NSUserDefault的使用比较简单:
A类页面:
NSUserDefaults *userDefault = [NSUserDefaults
standardUserDefaults];
[userDefault setObject:@“北京”
forKey:LASTCITY];
[userDefault synchronize];
B类页面:
NSUserDefaults *userDefault = [NSUserDefaults
standardUserDefaults];
NSString *lastCity = [userDefault
objectForKey:LASTCITY];
3.细节用法:
如果要存放自定义的对象(如自定义的类对象),则必须将其转换成NSData存储:
[cpp] view
plaincopy
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中的数据:
[cpp] view
plaincopy
NSUserDefaults *mySettingDataR = [NSUserDefaults standardUserDefaults];
NSLog(@"arrItem=%@", [mySettingDataR objectForKey:@"arrItem"]);
NSLog(@"user_name=%@", [mySettingDataR objectForKey:@"user_name"]);
NSLog(@"count=%d", [mySettingDataR integerForKey:@"count"]);
如果想删除某个数据项,可以使用removeObjectForKey删除数据:
[cpp] view
plaincopy
[mySettingData removeObjectForKey:@"arrItem"];
需要注意的是,NSUserDefaults是定时把缓存中的数据写入磁盘的,而不是即时写入,为了防止在写完NSUserDefaults后程序退出导致的数据丢失,可以在写入数据后使用synchronize强制立即将数据写入磁盘:
[cpp] view
plaincopy
[mySettingData synchronize];
运行上面的语句后,NSUserDefaults中的数据即被写入到.plist文件中,如果是在模拟器上运行程序,可以在Mac的/Users/YOUR-USERNAME/Library/Application Support/iPhone Simulator/4.1/Applications/YOUR-APP-DIR/Library/Prefereces目录下面找到一个文件名为YOUR-Bundle_Identifier.plist的plist文件,用Xcode打开该文件,可以看到刚才写入的数据。
4、针对同一个关键字对应的对象或者数据,可以对它进行重写,重写之后关键字就对应新的对象或者数据,旧的对象或者数据会被自动清理。
相关文章推荐
- iOS 数据持久化之使用NSUserDefaults存储数据
- iOS 数据持久化之使用NSUserDefaults存储数据
- iOS 数据持久化之使用NSUserDefaults存储数据
- iOS 数据持久化之使用NSUserDefaults存储数据
- iOS使用NSUserDefaults 存储数据报Attempt to set a non-property-list object as an NSUserDefaults value的错误解决
- 基于Swift的iOS应用程序开发:使用NSUserDefaults存储本地数据
- IOS 学习笔记17 iPhone开发之使用NSUserDefaults存储数据
- iOS 数据存储(二)NSUserDefaults使用
- iOS 数据持久化 NSUserDefault 的使用 NSUserDefaults读取和写入自定义对象
- iOS数据持久化 NSUserDefaults的使用
- iOS数据持久化存储 (1)-- Plist 、归档、NSUserDefaults、NSFileManager
- iOS 数据持久化 NSUserDefault 的使用 NSUserDefaults读取和写入自定义对象
- IOS开发:NSUserDefaults的使用(轻量级本地数据存储)
- iOS 数据持久化 NSUserDefault 的使用 NSUserDefaults读取和写入自定义对象
- iOS数据持久化存储 (1)-- Plist 、归档、NSUserDefaults、NSFileManager
- IOS数据持久化存储 user defaults 的基本使用
- iOS 数据持久化 NSUserDefault 的使用 NSUserDefaults读取和写入自定义对象
- IOS开发---菜鸟学习之路--(十九)-利用NSUserDefaults存储数据
- iOS 数据持久化 NSUserDefault 的使用
- 【IOS功能实现】之 NSUserDefaults的用法(轻量级本地数据存储)