您的位置:首页 > 移动开发 > IOS开发

NSUserDefaults的最佳使用方法

2015-12-01 19:33 489 查看
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高级编程》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息