NSUserDefaults的最佳使用方法

来源:互联网 发布:文艺气息的网名知乎 编辑:程序博客网 时间:2024/05/22 13:07

Date: 2015-12-01
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高级编程》

0 0