iOS 数据持久化之使用NSUserDefaults存储数据
2015-06-12 19:20
711 查看
原文:http://blog.csdn.net/lxinl/article/details/11770675
OS下可以使用NSUserDefaults、sqlite、CoreData几种常用的方式来存储数据,其中NSUserDefaults用来存储类似用户的配置等这些的数据,后两者用户存储大批量和比较复杂的数据。NSUserDefault的使用比较简单:
[cpp] view plaincopy
NSUserDefaults *mySettingData = [NSUserDefaults standardUserDefaults];
创建NSUserDefaults对象之后即可往里面添加数据,它支持的数据类型有NSString、 NSNumber、NSDate、 NSArray、NSDictionary、BOOL、NSInteger、NSFloat等系统定义的数据类型,如果要存放自定义的对象(如自定义的类对象),则必须将其转换成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打开该文件,可以看到刚才写入的数据。
OS下可以使用NSUserDefaults、sqlite、CoreData几种常用的方式来存储数据,其中NSUserDefaults用来存储类似用户的配置等这些的数据,后两者用户存储大批量和比较复杂的数据。NSUserDefault的使用比较简单:
[cpp] view plaincopy
NSUserDefaults *mySettingData = [NSUserDefaults standardUserDefaults];
创建NSUserDefaults对象之后即可往里面添加数据,它支持的数据类型有NSString、 NSNumber、NSDate、 NSArray、NSDictionary、BOOL、NSInteger、NSFloat等系统定义的数据类型,如果要存放自定义的对象(如自定义的类对象),则必须将其转换成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打开该文件,可以看到刚才写入的数据。
相关文章推荐
- ios ipa 发布遇到的问题记录
- OC基础:类和对象 分类: ios学习 OC 2015-06-12 18:55 17人阅读 评论(0) 收藏
- iOS 项目中用到的一些开源库和第三方组件
- IOS 需要学习的地方
- iBokan_ios80_自学系列_1(循环结构初练)
- IOS 调试lldb命令常用----po
- iOS scrollsToTop属性失效
- iOS 项目中用到的一些开源库和第三方组件
- iOS Code Signing 学习笔记
- iOS Provisioning Profile(Certificate)与Code Signing详解
- iOS开发备忘录:属性列表文件数据持久化
- 查看 ios 真机调试log,导出log
- 查看 ios 真机调试log,导出log
- IOS-TextField功能方法详解
- -pie can only be used when targeting iOS 4.2 or later
- IOS开发模块总结(一)本地数据存储5 NSFileManager
- autolayout学习介绍------Masonry的使用
- GitHub 上大概600个开源 iOS 项目的分类和介绍,对于你挑选和使用开源项目应该有帮助
- iOS学习笔记之QuartzCore框架
- IOS动画Core Animation详解