IOS NSUserDefaults-轻量级本地数据存储

时间:2020-12-29 05:33:25

IOS NSUserDefaults-轻量级本地数据存储

IOS 针对用户数据持久化处理提供了多种处理方式:NSUserDefaults、plist 以及 sqlite3 数据库 都是很不错的选择!

NSUserDefaults 是一种轻量级本地数据存储,操作方便,但仅支持Bool、Float、NSInteger、Object、Double、Url 这六种数据类型的存储

NSUserDefaults 提供了添加、读取以及移除等方法,供开发者调用,具体示例如下:

GNSUserDefaults.h

#import <Foundation/Foundation.h>
/**
* GNSUserDefaults
* 轻量级本地数据存储(NSUserDefaults)
*/
@interface GNSUserDefaults : NSObject


/**
* get_userDefaults
* 获取并初始化 NSUserDefaults 对象
*
* @return NSUserDefaults
*/
+(NSUserDefaults *) get_userDefaults;


#pragma mark-Class UserDefaults 保存数据(仅支持六种类型:Bool、Float、NSInteger、Object、Double、Url)
/**
* saveUserDefaults_Bool
* 保存数据
*
* @param objValue BOOL 保存的数据值
* @param objKey NSString 保存的数据键
*/
+(void) saveUserDefaults_Bool:(BOOL) objValue objKey:(NSString *)objKey;

/**
* saveUserDefaults_Float
* 保存数据
*
* @param objValue float 保存的数据值
* @param objKey NSString 保存的数据键
*/
+(void) saveUserDefaults_Float:(float) objValue objKey:(NSString *)objKey;

/**
* saveUserDefaults_Integer
* 保存数据
*
* @param objValue float 保存的数据值
* @param objKey NSString 保存的数据键
*/
+(void) saveUserDefaults_Integer:(NSInteger) objValue objKey:(NSString *)objKey;

/**
* saveUserDefaults_NSObject
* 保存数据
*
* @param objValue NSObject 保存的数据值
* @param objKey NSString 保存的数据键
*/
+(void) saveUserDefaults_NSObject:(NSObject *) objValue objKey:(NSString *)objKey;

/**
* saveUserDefaults_Double
* 保存数据
*
* @param objValue double 保存的数据值
* @param objKey NSString 保存的数据键
*/
+(void) saveUserDefaults_Double:(double) objValue objKey:(NSString *)objKey;

/**
* saveUserDefaults_NSURL
* 保存数据
*
* @param objValue NSURL 保存的数据值
* @param objKey NSString 保存的数据键
*/
+(void) saveUserDefaults_NSURL:(NSURL *) objValue objKey:(NSString *)objKey;


#pragma mark-Class 读取 UserDefaults 数据(仅支持六中类型:Bool、Float、NSInteger、Object(id)、Double、Url)
/**
* readUserDefaults_Bool
* 读取数据
*
* @param objKey NSString 读取的键名
*
* @return NSObject 键对应值
*/
+(BOOL) readUserDefaults_Bool:(NSString *) objKey;

/**
* readUserDefaults_Float
* 读取数据
*
* @param objKey NSString 读取的键名
*
* @return NSObject 键对应值
*/
+(float) readUserDefaults_Float:(NSString *) objKey;

/**
* readUserDefaults_Integer
* 读取数据
*
* @param objKey NSString 读取的键名
*
* @return NSObject 键对应值
*/
+(NSInteger) readUserDefaults_Integer:(NSString *) objKey;

/**
* readUserDefaults_Object
* 读取数据
*
* @param objKey NSString 读取的键名
*
* @return NSObject 键对应值
*/
+(id) readUserDefaults_Object:(NSString *) objKey;

/**
* readUserDefaults_Double
* 读取数据
*
* @param objKey NSString 读取的键名
*
* @return NSObject 键对应值
*/
+(double) readUserDefaults_Double:(NSString *) objKey;

/**
* readUserDefaults_URl
* 读取数据
*
* @param objKey NSString 读取的键名
*
* @return NSObject 键对应值
*/
+(NSURL *) readUserDefaults_URl:(NSString *) objKey;
@end

GNSUserDefaults.m


#import "GNSUserDefaults.h"

/**
* GNSUserDefaults
* 轻量级本地数据存储(NSUserDefaults)
*/
@implementation GNSUserDefaults

#pragma mark-Class static variable
static NSUserDefaults* userDefaults;


#pragma mark-Class method
+(NSUserDefaults *) get_userDefaults{
if (!userDefaults)
userDefaults = [NSUserDefaults standardUserDefaults];

return userDefaults;
}


#pragma mark-Class UserDefaults 保存数据(仅支持六种类型:Bool、Float、NSInteger、Object、Double、Url)
+(void) saveUserDefaults_Bool:(BOOL) objValue objKey:(NSString *)objKey{
[[GNSUserDefaults get_userDefaults] setBool:objValue forKey:objKey];

//这里建议同步存储到磁盘中,但是不是必须的
[[GNSUserDefaults get_userDefaults] synchronize];
}


+(void) saveUserDefaults_Float:(float) objValue objKey:(NSString *)objKey{
[[GNSUserDefaults get_userDefaults] setFloat:objValue forKey:objKey];

//这里建议同步存储到磁盘中,但是不是必须的
[[GNSUserDefaults get_userDefaults] synchronize];
}


+(void) saveUserDefaults_Integer:(NSInteger) objValue objKey:(NSString *)objKey{
[[GNSUserDefaults get_userDefaults] setInteger:objValue forKey:objKey];

//这里建议同步存储到磁盘中,但是不是必须的
[[GNSUserDefaults get_userDefaults] synchronize];
}


+(void) saveUserDefaults_NSObject:(NSObject*) objValue objKey:(NSString *)objKey{
[[GNSUserDefaults get_userDefaults] setObject:objValue forKey:objKey];

//这里建议同步存储到磁盘中,但是不是必须的
[[GNSUserDefaults get_userDefaults] synchronize];
}


+(void) saveUserDefaults_Double:(double) objValue objKey:(NSString *)objKey{
[[GNSUserDefaults get_userDefaults] setDouble:objValue forKey:objKey];

//这里建议同步存储到磁盘中,但是不是必须的
[[GNSUserDefaults get_userDefaults] synchronize];
}


+(void) saveUserDefaults_NSURL:(NSURL *) objValue objKey:(NSString *)objKey{
[[GNSUserDefaults get_userDefaults] setURL:objValue forKey:objKey];

//这里建议同步存储到磁盘中,但是不是必须的
[[GNSUserDefaults get_userDefaults] synchronize];
}


#pragma mark-Class 读取 UserDefaults 数据(仅支持六中类型:Bool、Float、NSInteger、Object(id)、Double、Url)
+(BOOL) readUserDefaults_Bool:(NSString *) objKey{
return [[GNSUserDefaults get_userDefaults] boolForKey:objKey];
}


+(float) readUserDefaults_Float:(NSString *) objKey{
return [[GNSUserDefaults get_userDefaults] floatForKey:objKey];
}


+(NSInteger) readUserDefaults_Integer:(NSString *) objKey{
return [[GNSUserDefaults get_userDefaults] integerForKey:objKey];
}


+(id) readUserDefaults_Object:(NSString *) objKey{
return [[GNSUserDefaults get_userDefaults] objectForKey:objKey];
}


+(double) readUserDefaults_Double:(NSString *) objKey{
return [[GNSUserDefaults get_userDefaults] doubleForKey:objKey];
}


+(NSURL *) readUserDefaults_URl:(NSString *) objKey{
return [[GNSUserDefaults get_userDefaults] URLForKey:objKey];
}
@end

移除对象:removeObjectForKey

更多信息参考:http://blog.csdn.net/enuola/article/details/7959767