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

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

时间: 2024-10-29 19:13:37

IOS NSUserDefaults-轻量级本地数据存储的相关文章

IOS中NSUserDefaults的用法(轻量级本地数据存储)

iOS数据保存 IOS中NSUserDefaults的用法(轻量级本地数据存储) IOS中NSUserDefaults的用法(轻量级本地数据存储),布布扣,bubuko.com

IOS中NSUserDefaults的用法(轻量级本地数据存储) (转)

NSUserDefaults适合存储轻量级的本地数据,比如要保存一个登陆界面的数据,用户名.密码之类的,个人觉得使用NSUserDefaults是首选.下次再登陆的时候就可以直接从NSUserDefaults里面读取上次登陆的信息咯. 因为如果使用自己建立的plist文件什么的,还得自己显示创建文件,读取文件,很麻烦,而是用NSUserDefaults则不用管这些东西,就像读字符串一样,直接读取就可以了. NSUserDefaults支持的数据格式有:NSNumber(Integer.Float

iOS开发:本地数据存储-NSUserDefaults

Getting Default Values arrayForKey(_:) boolForKey(_:) dataForKey(_:) dictionaryForKey(_:) floatForKey(_:) integerForKey(_:) objectForKey(_:) stringArrayForKey(_:) stringForKey(_:) doubleForKey(_:) URLForKey(_:) Setting Default Values setBool(_:forKey

iOS开发——数据持久化&amp;使用NSUserDefaults来进行本地数据存储

使用NSUserDefaults来进行本地数据存储 NSUserDefaults适合存储轻量级的本地客户端数据,比如记住密码功能,要保存一个系统的用户名.密码.使用NSUserDefaults是首选.下次再登陆的时候就可以直接从NSUserDefaults里面读取上次登陆的信息. 一般来说本地存储数据我们还可以是用SQlite数据库,或者使用自己建立的plist文件什么的,但这还得自己显示创建文件,读取文件,很麻烦,而是用NSUserDefaults则不用管这些东西,就像读字符串一样,直接读取就

三种iOS应用程序用户数据存储方法

本文通过偏好设置,plist文件,归档解档三种方法来演示iOS应用程序用户数据存储机制. 首先,我们创建一个Person类,并定义三个成员属性,用来存储数据 @property (nonatomic,copy) NSString *name; @property (nonatomic,assign)NSInteger age; @property (nonatomic,assign)BOOL isTrue; 一.通过偏好设置 1.通过偏好设置存储数据 //获取偏好设置的对象 NSUserDefa

iOS 常用四种数据存储方式

iOS 常用四种数据存储方式 在iOS开发过程中,不管是做什么应用,都会碰到数据保存的问题.将数据保存到本地,能够让程序的运行更加流畅, ,使得用户体验更好.下面介绍?一下数据保存的方式: 1.NSKeyedArchiver:采用归档的形式来保存数据,该数据对象需要遵守NSCoding协议,并且该对象对应的类必须提供encodeWithCoder:和initWithCoder:方法.前?一个方法告诉系统怎么对对象进行编码,而后?一个方法则是告诉系统怎么对对象进行解码.例如对Possession对

CoreData 本地数据存储

在iOS开发中,我们会用到本地数据文件的存储,一般有属性列表Plist,SQLite,CoreDate以及沙盒文件等方式,现在归纳一下CoreData. CoreData是苹果iOS 5后提供的本地文件存储框架,利用CoreData可以方便创建关系映射,进行数据CRUD(增删改查)操作. <注意>使用CoreData处理数据务必先引入CoreData框架包:CoreData.framework: 1.创建CoreData文件的两种方式 (a).在使用CoreData时我们需要进行CoreDat

Unity本地数据存储---Sqlite和JSON

2014-04-30更新 剔除了使用网络上烂大街的SQLite使用方法(原因android下无法读取数据),使用libSQLite3.so,通过DLLImport,在C#代码里直接调用C接口 这种原生调用SQLite的方式,我在pc.android上亲测无误,ios没测过,但是stackoverflow上有兄弟试过,没问题.园子的朋友如果可以测IOS的,欢迎提供结果 基本思路,游戏基础配置数据,比如怪物的属性.装备模板属性.关卡怪物等,使用SQLite(Unity插件SQLiteUnityKit

学习IOS开发UI篇--数据存储

iOS应用数据存储的常用方式 1.lXML属性列表(plist)归档 2.lPreference(偏好设置) 3.lNSKeyedArchiver归档(NSCoding) 4.lSQLite3 5.lCore Data Documents:保存应用运行时生成的需要持久化的数据,iTunes同步设备时会备份该目录.例如,游戏应用可将游戏存档保存在该目录 tmp:保存应用运行时所需的临时数据,使用完毕后再将相应的文件从该目录删除.应用没有运行时,系统也可能会清除该目录下的文件.iTunes同步设备时