概述
用戶輕量級的數據持久化,主要用于保存用戶程序的配置等信息猾骡,以便下次啟動程序后能恢復上次的設置舅桩。
該數據實際上是以“鍵值對”形式保存的(類似于NSDictionary),因此我們需要通過key來讀取或者保存數據(value)担猛。
該NSUserDefaults類提供了一個默認的系統(tǒng)編程接口進行交互。
在默認系統(tǒng)允許應用程序來定制其行為,以符合使用者的偏好毁习。
例如智嚷,您可以允許用戶確定測量你的應用程序顯示文件或如何往往會自動儲存單位。
通過分配應用程序記錄的參數值在用戶的默認數據庫設置這種優(yōu)惠纺且。
在運行時,可以使用NSUserDefaults對象讀取您的應用程序的默認數據庫使用從用戶的默認值稍浆。NSUserDefaults緩存信息载碌,以避免不必打開用戶的默認數據庫,每次需要一個默認值衅枫。它會自動調用的時間間隔周期性的嫁艇,始終是用戶的默認數據庫與內存中的緩存同步。
NSUserDefaults只支持: NSData,NSString, NSNumber, NSDate, NSArray, NSDictionary. 如果把一個自定義的類存到一個NSArray里弦撩,然后再存到NSUserDefaults里也是不能成功的步咪。
返回值從NSUserDefaults是不可改變的,即使你設置一個值可變對象益楼。 例如猾漫,如果設置一個可變的字符串值作為"MyStringDefault"您以后檢索字串使用stringForKey:會是一成不變的。
相關類方法
// 同步對共享對象的任何更改默認用戶和從內存中釋放它感凤。
resetStandardUserDefaults
// 返回共享默認對象悯周。
+ (NSUserDefaults *)standardUserDefaultsaddSuiteNamed:
// 插入到接收器的搜索列表中指定的域名。
- (void)addSuiteNamed:( NSString *) suiteName
// 返回與指定鍵相關聯的數組陪竿。
- ( NSArray *)arrayForKey:( NSString *) defaultName
// 返回布爾值與指定鍵相關聯禽翼。
- (BOOL)boolForKey:( NSString *) defaultName
// 返回數據對象與指定鍵相關聯。
- ( NSData *)dataForKey:( NSString *) defaultName
// 返回Dictionary對象與指定鍵相關聯族跛。
- ( NSDictionary *)dictionaryForKey:( NSString *) defaultName
// 返回一個字典闰挡,它包含在搜索列表中的域的所有鍵值對聯盟。( NSData 礁哄, NSString 长酗, NSNumber , NSDate 姐仅,NSArray 花枫,或NSDictionary )
- ( NSDictionary *)dictionaryRepresentation
// 消除了在標準應用程序域指定的默認??鍵值。
- (void)removeObjectForKey:( NSString *) defaultName
// 刪除指定的從用戶的默認持久域的內容掏膏。
- (void)removePersistentDomainForName:( NSString *) domainName
// 設置指定的默認??鍵到指定的布爾值劳翰。
- (void)setBool:(BOOL) value forKey:( NSString *) defaultName
// 設置為指定的字典持久域。
- (void)setPersistentDomain:( NSDictionary *) domain forName:( NSString *) domainName
// 設置指定的默認??鍵到指定的URL值馒疹。
- (void)setURL:( NSURL *) url forKey:( NSString *) defaultName
// 設置為指定的字典揮發(fā)性域佳簸。
- (void)setVolatileDomain:( NSDictionary *) domain forName:( NSString *) domainName
// 返回與指定鍵關聯的字符串數組。
- ( NSArray *)stringArrayForKey:( NSString *) defaultName
// 返回與指定鍵關聯的字符串。
- ( NSString *)stringForKey:( NSString *) defaultName
//返回NSURL實例與指定鍵相關聯生均。
- ( NSURL *)URLForKey:( NSString *) defaultName
// 返回double值與指定鍵相關聯听想。
- (double)doubleForKey:( NSString *) defaultName
// 返回浮點值與指定鍵相關聯。
- (float)floatForKey:( NSString *) defaultName
// 返回NSUserDefaults對象初始化的用戶帳戶的默認為指定的马胧。
- (id)initWithUser:( NSString *) username
// 返回整數值與指定鍵關聯..
- ( NSInteger NSInteger )integerForKey:( NSString *) defaultName
// 返回與指定默認的第一個發(fā)生關聯的對象汉买。
- (id)objectForKey:( NSString *) defaultName
// 判斷此key是否存在
- (BOOL)objectIsForcedForKey:( NSString *) key
具體使用如下:
// 官方規(guī)定類型使用
// 獲取一個NSUserDefaults引用:
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
// 保存數據
[userDefaults setInteger:1 forKey:@"thyKey"];
[userDefaults synchronize];
// 讀取數據
int i = [userDefaults integerForKey:@"thyKey"];
// 其他類型使用(如一個類等)
// 保存數據:
NSData *objColor = [NSKeyedArchiver archivedDataWithRootObject:[UIColor redColor]];
[[NSUserDefaults standardUserDefaults]setObject:objColor forKey:@"thyColor"];
// 讀取數據:
NSData *objColor = [[NSUserDefaults standardUserDefaults]objectForKey:@"thyColor"];
UIColor *myColor = [NSKeyedUnarchiver unarchiveObjectWithData:objColor];