IOS 針對用戶數據持久化處理提供了多種處理方式:NSUserDefaults、plist 以及 sqlite3 數據庫 都是很不錯的選擇!
NSUserDefaults 是一種輕量級本地數據存儲,操作方便,但僅支持Bool、Float、NSInteger、Object、Double、Url 這六種數據類型的存儲
NSUserDefaults 提供了添加、讀取以及移除等方法,供開發者調用,具體示例如下:
#import/** * 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
#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