iOS本地存儲——NSUserDefaults

1眶痰、NSUserDefault——官方文檔

NSUserDefaults類提供了訪問常見類型(如float橘券,double累榜,int,bool和URL)的便捷方法富弦。一個默認(rèn)對象必須是一個屬性列表 - 也就是沟娱,一個實例(或集合,實例的組合):NSData腕柜,NSString济似,NSNumber矫废,NSDate,NSArray或NSDictionary砰蠢。如果要存儲任何其他類型的對象蓖扑,則通常應(yīng)將其存檔以創(chuàng)建NSData的實例。有關(guān)更多詳情台舱,請參閱首選項和設(shè)置編程指南律杠。

注意:當(dāng)我們需要保存一個集合類型時,比如NSArray竞惋,數(shù)組里保存的數(shù)據(jù)也必須是以上的類型柜去,不能是其他類型。
2拆宛、簡單使用
    //NSUserDefaults是一個單例嗓奢,獲取對象
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    
    //存儲一個對象類型
    [userDefaults setObject:@"Trump" forKey:@"president"];
    //取出一個對象類型
    NSString *tump = [userDefaults objectForKey:@"president"];
    NSLog(@"%@", tump);
    //存儲一個bool類型
    [userDefaults setBool:YES forKey:@"isPoor"];
    //取出一個bool值
    BOOL isPoor = [userDefaults boolForKey:@"isPoor"];
    NSLog(@"%d", isPoor);
    //NSUserDefaults只能處理NSData、NSString浑厚、NSNumber股耽、NSDate、NSArray瞻颂、NSDictionary這幾種類型豺谈,假如我們要存儲一個UIImage,則要先將其轉(zhuǎn)換成NSData
    UIImage *image = [UIImage imageNamed:@"meinv"];
    //將圖片歸檔為NSData
    NSData *imageData = UIImageJPEGRepresentation(image, 1.0);
    //存儲imageData
    [userDefaults setObject:imageData forKey:@"imgage"];
    //取出Data
    NSData *getImageData = [userDefaults objectForKey:@"image"];
    //Data轉(zhuǎn)成圖片
    UIImage *getImage = [UIImage imageWithData:getImageData];

另外還有一些其他常用的API

    //從字面意思就能明白
    - setFloat:forKey:
    - setInteger:forKey:
    - setDouble:forKey:
    - setURL:forKey:
3贡这、registerDefaults:的使用
  • 在我們使用NSUserDefaults時會遇到一些特殊的情況茬末,比如以下代碼:
    BOOL isRMB = [userDefaults boolForKey:@"isRMB"];

我們沒有設(shè)置isRMB的值,直接去取盖矫,這樣它的返回結(jié)果是0丽惭,但是我們并不能確定它是真的NO,還是no value辈双。這個問題很尷尬责掏,我們可以用objectForKey: 解決這個問題,但是用registerDefaults:可以更好的解決這個問題湃望。

    //此方法參數(shù)是一個字典换衬,功能就是給isRMB這個key注冊一個默認(rèn)的值
    //由于此方法不會將值存儲到磁盤上了,所以這個方法要在程序啟動的時候調(diào)用也就是在application didFinishLaunchingWithOptions:方法中調(diào)用
    [userDefaults registerDefaults:@{@"isRMB" : @(YES)}];
    //這樣再去取isRMB這個key對應(yīng)的值時就不會出現(xiàn)返回值為no  value的情況了
    BOOL isRMB = [userDefaults boolForKey:@"isRMB"];
4证芭、域的概念

NSUserDefaults有一個域的概念瞳浦,當(dāng)我們調(diào)用 NSUserDefaults.standardUserDefaults() 方法時,就會初始化 NSUserDefaults废士, 并且它默認(rèn)會包含 5 個 Domain叫潦, 分別是:

  • NSArgument Domain (參數(shù)域) 最高優(yōu)先級
  • Application Domain (應(yīng)用域) 是最重要的域,它存儲著你app通過NSUserDefaults set...forKey添加的設(shè)置官硝。
  • NSGlobal Domain (全局域) 存儲系統(tǒng)設(shè)置
  • Language-specific Domains (日期矗蕊,語言)
  • Registration Domain (注冊域)僅有較低的優(yōu)先權(quán)短蜕,只有在應(yīng)用域沒有找到值時才從注冊域去尋找。
registerDefaults:就是把值注冊到 Registration Domain (注冊域)中傻咖,然后我們每次去獲取值得時候都會在底層的存儲結(jié)構(gòu)中搜索一遍朋魔,順序從優(yōu)先級最高的開始:
NSArgument Domain -> Application Domain -> NSGlobal Domain -> Language-specific Domains -> NSRegistrationDomain

在使用registerDefaults:時,就是把值注冊在了注冊域中没龙,而注冊域中的數(shù)據(jù)不會被寫到磁盤铺厨,所以我們每次在程序啟動時都要調(diào)用一遍缎玫。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末硬纤,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子赃磨,更是在濱河造成了極大的恐慌筝家,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件邻辉,死亡現(xiàn)場離奇詭異溪王,居然都是意外死亡,警方通過查閱死者的電腦和手機值骇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門莹菱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人吱瘩,你說我怎么就攤上這事道伟。” “怎么了使碾?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵蜜徽,是天一觀的道長。 經(jīng)常有香客問我票摇,道長拘鞋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任矢门,我火速辦了婚禮盆色,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘祟剔。我一直安慰自己隔躲,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布峡扩。 她就那樣靜靜地躺著蹭越,像睡著了一般。 火紅的嫁衣襯著肌膚如雪教届。 梳的紋絲不亂的頭發(fā)上响鹃,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天驾霜,我揣著相機與錄音,去河邊找鬼买置。 笑死粪糙,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的忿项。 我是一名探鬼主播蓉冈,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼轩触!你這毒婦竟也來了寞酿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤脱柱,失蹤者是張志新(化名)和其女友劉穎伐弹,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體榨为,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡惨好,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了随闺。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片日川。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖矩乐,靈堂內(nèi)的尸體忽然破棺而出龄句,到底是詐尸還是另有隱情,我是刑警寧澤绰精,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布撒璧,位于F島的核電站,受9級特大地震影響笨使,放射性物質(zhì)發(fā)生泄漏卿樱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一硫椰、第九天 我趴在偏房一處隱蔽的房頂上張望繁调。 院中可真熱鬧,春花似錦靶草、人聲如沸蹄胰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽裕寨。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間宾袜,已是汗流浹背捻艳。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留庆猫,地道東北人认轨。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像月培,于是被迫代替她去往敵國和親嘁字。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理杉畜,服務(wù)發(fā)現(xiàn)纪蜒,斷路器,智...
    卡卡羅2017閱讀 134,600評論 18 139
  • IOS-本地存儲-NSUserDefaults 原文地址:張哲的博客 一 NSUserDefaults簡介 NSU...
    BlessNeo閱讀 4,752評論 0 7
  • 歡迎關(guān)注公眾號: CodeReview 關(guān)于NSUserDefaults首先要看蘋果官方的定義 NSUserDef...
    sellse閱讀 79,251評論 16 169
  • 會武術(shù)的科學(xué)家是一種什么樣的體驗?zāi)刎揖#刻热艋癁橄袼匕嬗螒虬柚加惺裁醇寄馨⊙览觯孔屛覀兡ぐ菀幌掳桑?更多科學(xué)家技能 戳這...
    極分享閱讀 563評論 0 1
  • 我知道你和我就像是豆?jié){油條要一起吃下去味道才是最好 豆?jié){油條烤芦,傳統(tǒng)的中國式早餐 油條举娩,外酥里嫩,一口下去构罗,唇齒留香...
    這就是我的昵稱啊閱讀 200評論 0 0