iOS NSUserDefaults基本用法

概述

用戶輕量級的數據持久化,主要用于保存用戶程序的配置等信息猾骡,以便下次啟動程序后能恢復上次的設置舅桩。
該數據實際上是以“鍵值對”形式保存的(類似于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];
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市佩脊,隨后出現的幾起案子蛙粘,更是在濱河造成了極大的恐慌,老刑警劉巖威彰,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件出牧,死亡現場離奇詭異,居然都是意外死亡歇盼,警方通過查閱死者的電腦和手機舔痕,發(fā)現死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來豹缀,“玉大人伯复,你說我怎么就攤上這事」⒚迹” “怎么了边翼?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長鸣剪。 經常有香客問我组底,道長,這世上最難降的妖魔是什么筐骇? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任债鸡,我火速辦了婚禮,結果婚禮上铛纬,老公的妹妹穿的比我還像新娘厌均。我一直安慰自己,他們只是感情好告唆,可當我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布棺弊。 她就那樣靜靜地躺著,像睡著了一般擒悬。 火紅的嫁衣襯著肌膚如雪模她。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天懂牧,我揣著相機與錄音侈净,去河邊找鬼。 笑死,一個胖子當著我的面吹牛畜侦,可吹牛的內容都是我干的元扔。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼旋膳,長吁一口氣:“原來是場噩夢啊……” “哼澎语!你這毒婦竟也來了?” 一聲冷哼從身側響起溺忧,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤咏连,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后鲁森,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡振惰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年歌溉,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片骑晶。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡痛垛,死狀恐怖,靈堂內的尸體忽然破棺而出桶蛔,到底是詐尸還是另有隱情匙头,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布仔雷,位于F島的核電站蹂析,受9級特大地震影響,放射性物質發(fā)生泄漏碟婆。R本人自食惡果不足惜电抚,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望竖共。 院中可真熱鬧蝙叛,春花似錦、人聲如沸公给。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽淌铐。三九已至肺然,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間匣沼,已是汗流浹背狰挡。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人加叁。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓倦沧,卻偏偏與公主長得像,于是被迫代替她去往敵國和親它匕。 傳聞我的和親對象是個殘疾皇子展融,可洞房花燭夜當晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現豫柬,斷路器告希,智...
    卡卡羅2017閱讀 134,600評論 18 139
  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結起來就是把...
    Dove_iOS閱讀 27,125評論 29 470
  • 關于首選項和設置 首選項是您持久存儲的信息,并用于配置您的應用程序烧给。應用程序通常會向用戶公開偏好設置燕偶,以便他們自定...
    nicedayCoco閱讀 987評論 0 0
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,515評論 25 707
  • 1.smudge There was a dark smudge on his forehead. 2.ignit...
    Mr_Oldman閱讀 221評論 0 0