NSUserDefaults的最佳使用方法
2015-12-01 19:33
489 查看
Date: 2015-12-01
Title: NSUserDefaults的最佳使用方法
Tags: iOS-Dev-skills
Status: public
使用起来通常以上代码基本解决问题。
但是,优先同步改变的这个对象以保证修改总是展示出正确的值,这 一点就变得很重要。
因此,我们可以创建一个辅助类,用它使用NSUserDefaults来对本地存储的设置项进行读取,以保证每次拿到最新的值。
1、创建objective class,集成NSObject类,命名为ConfigurationHelper,我们可以得到对应的.h和.m两个文件。
2、在ConfigurationHelper.h中声明类方法
3、在ConfigurationHelper.m中实现.h中声明的方法
4、辅助类的使用
在项目的Supporting Files文件夹下的.pch中导入该类
这样就可以保证该类在APP其他类中可以全局访问
取值:
存值:
如果有更好的方法,请告诉我,谢谢
注:该文总结于《iOS高级编程》
Title: NSUserDefaults的最佳使用方法
Tags: iOS-Dev-skills
Status: public
使用NSUserDefaults保存数据
使用NSUserDefaults来保存数据在iOS开发过程中非常便捷,因为可以在APP的不同地方来修改或者保存一些设置。NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults synchronize];//同步 [defaults setBool:NO forKey:@"key"];//保存bool值 [defaults setValue:_value forKey:@"key"];//保存对象 [defaults synchronize];//同步
使用起来通常以上代码基本解决问题。
但是,优先同步改变的这个对象以保证修改总是展示出正确的值,这 一点就变得很重要。
因此,我们可以创建一个辅助类,用它使用NSUserDefaults来对本地存储的设置项进行读取,以保证每次拿到最新的值。
1、创建objective class,集成NSObject类,命名为ConfigurationHelper,我们可以得到对应的.h和.m两个文件。
2、在ConfigurationHelper.h中声明类方法
//设置APP启动时的defaults +(void)setApplicationStartupDefaults; //根据_objectkey获取对应的bool值 +(BOOL)getBoolValueForConfigurationKey:(NSString *)_objectkey; //根据_objectkey获取对应的string值 +(NSString *)getStringValueForConfigurationKey:(NSString *)_objectkey; //根据_objectkey设置对应的布尔值_boolvalue +(void)setBoolValueForConfigurationKey:(NSString *) _objectkey withValue:(BOOL)_boolvalue; //根据_objectkey设置对应的字符串值_value +(void)setStringValueForConfigurationKey:(NSString *) _objectkey withValue:(NSString *)_value;
3、在ConfigurationHelper.m中实现.h中声明的方法
//设置APP启动时的defaults +(void)setApplicationStartupDefaults { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults synchronize]; [defaults setBool:NO forKey:bYDFirstLaunch]; [defaults setBool:NO forKey:bYDAuthenticated]; [defaults synchronize]; } //根据_objectkey获取对应的bool值 +(BOOL)getBoolValueForConfigurationKey:(NSString *)_objectkey { //create an instance of NSUserDefaults NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults synchronize]; //let's make sure the object is synchronized return [defaults boolForKey:_objectkey]; } //根据_objectkey获取对应的string值 +(NSString *)getStringValueForConfigurationKey:(NSString *)_objectkey { //create an instance of NSUserDefaults NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults synchronize]; //let's make sure the object is synchronized //当 getStringValueForConfigurationKey:方法尝试传入一个空指针时,它会返回一个空的 NSString 而不是这个空指针。 if ([defaults stringForKey:_objectkey] == nil ) { //I don't want a (null) returned return @""; }else { return [defaults stringForKey:_objectkey]; } } //根据_objectkey设置对应的布尔值_boolvalue +(void)setBoolValueForConfigurationKey:(NSString *) _objectkey withValue:(BOOL)_boolvalue { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults synchronize]; //let's make sure the object is synchronized [defaults setBool:_boolvalue forKey:_objectkey]; [defaults synchronize];//make sure you're synchronized again } //根据_objectkey设置对应的字符串值_value +(void)setStringValueForConfigurationKey:(NSString *) _objectkey withValue:(NSString *)_value { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults synchronize]; //let's make sure the object is synchronized [defaults setValue:_value forKey:_objectkey]; [defaults synchronize];//make sure you're synchronized again }
4、辅助类的使用
在项目的Supporting Files文件夹下的.pch中导入该类
#import "ConfigurationHelper.h"
这样就可以保证该类在APP其他类中可以全局访问
取值:
//取字符串 [ConfigurationHelper getStringValueForConfigurationKey:@"key"]; //取bool值 [ConfigurationHelper getStringValueForConfigurationKey:@"key"];
存值:
//存字符串 [ConfigurationHelper setStringValueForConfigurationKey:@"key" withValue:@"objcet"]; //存bool值 [ConfigurationHelper setBoolValueForConfigurationKey:@"key" withValue:@"objcet"];
如果有更好的方法,请告诉我,谢谢
注:该文总结于《iOS高级编程》
相关文章推荐
- 一些关于数据存储和查询优化的想法
- 正确面对服务器数据存储防止数据丢失
- 高性能Javascript笔记 数据的存储与访问性能优化
- 在android开发中进行数据存储与访问的多种方式介绍
- iOS开发之路--微博“更多”页面
- Android 数据存储方式有哪几种
- iOS开发之路--微博骨架搭建
- IOS开发代码分享之获取启动画面图片的string
- Python使用shelve模块实现简单数据存储的方法
- android中使用SharedPreferences进行数据存储的操作方法
- IOS开发之路--C语言数组和字符串
- IOS开发代码分享之用nstimer实现倒计时功能
- IOS开发代码分享之设置UISearchBar的背景颜色
- iOS和tvOS游戏按需加载资源简介
- ios开发之环境搭建-01
- Android基础——数据存储
- 在开发iOS程序时对日期处理的总结
- iOS开发——keychain的使用
- iOS Graphics Technologies iOS 图形技术
- iOS开发异常错误总结