關(guān)于NSUserDefaults

作為iOS重要的數(shù)據(jù)持久化技術(shù)之一,相信很多人都用過(guò)NSUserDefaults ,原因無(wú)他肮柜,實(shí)在太好用了,我曾見(jiàn)過(guò)有人用它來(lái)做正向傳值的 ==七芭!

1.NSUserDefaults適合保存用戶(hù)配置信息素挽。

2.NSUserDefaults能保存的數(shù)據(jù)類(lèi)型有string、array狸驳、dictionary预明、data缩赛、url、integer撰糠、float酥馍、double、BOOL等數(shù)據(jù)類(lèi)型阅酪。

3.NSUserDefaults里的信息以plist文件存儲(chǔ)在沙盒中旨袒,具體存在/Library/Preferences中


初始化:

NSUserDefaults有四個(gè)初始化方法:一個(gè)類(lèi)方法,三個(gè)對(duì)象方法术辐。

1. + (NSUserDefaults*)standardUserDefaults;//系統(tǒng)推薦的初始化方法砚尽。

2.- (instancetype)init;//效果和standarUserDefaults一樣。

3.- (nullableinstancetype)initWithSuiteName:(nullableNSString*)suitenameNS_AVAILABLE(10_9,7_0)NS_DESIGNATED_INITIALIZER;//這個(gè)方法要傳入一個(gè)字符串辉词,待會(huì)再講

4.- (nullableid)initWithUser:(NSString*)usernameNS_DEPRECATED(10_0,10_9,2_0,7_0);//這個(gè)方法在ios7.0之后已經(jīng)被棄用了,目前這個(gè)方法貌似無(wú)用必孤。

NSUserDefaults會(huì)將開(kāi)發(fā)者存入它里面的信息以plist文件的形式寫(xiě)入到沙盒中。第一個(gè)和第二個(gè)方法初始化生成的plist文件的名稱(chēng)以這樣的規(guī)律命名:(bundle identifier).(項(xiàng)目名).plist瑞躺!

第三個(gè)方法比較有意思敷搪,它會(huì)以傳進(jìn)來(lái)的字符串xxxx為名字創(chuàng)建一個(gè)plist文件:xxxx.plist!

第四個(gè)方法不知道有沒(méi)有用幢哨,我沒(méi)試成功赡勘。

需要注意的是:在用上面的三個(gè)方法初始化成功之后,在setValue:forkey: 之前捞镰,你的/Library/Preferences中是沒(méi)有那個(gè)“應(yīng)該”出現(xiàn)的plist文件的闸与,不信的可以去使一下,就初始化曼振,但是不賦值几迄。

然后就是各種賦值和讀取的方法,太簡(jiǎn)單了冰评,不介紹。

各種有點(diǎn)難以理解的方法:


1.+ (void)resetStandardUserDefaults;

//這個(gè)方法是在第一個(gè)初始化的類(lèi)方法之后的木羹,看字面意思應(yīng)該重置userDefault(但是貌似沒(méi)起作用甲雅,有知道的求告知)

2.- (void)registerDefaults:(NSDictionary *)registrationDictionary;

//將一個(gè)指定字典的內(nèi)容添加到注冊(cè)域(應(yīng)該是NSRegistrationDomain)。如果不存在注冊(cè)域坑填,則用指定的字典創(chuàng)建一個(gè),然后NSRegistrationDomain會(huì)被添加到搜索列表(?)中抛人。注冊(cè)域中的內(nèi)容是不會(huì)寫(xiě)入到沙盒中的,你需要在程序啟動(dòng)的時(shí)候手動(dòng)調(diào)用它脐瑰,或者你可以將它寫(xiě)入到plist文件中保存起來(lái)妖枚,然后調(diào)用registerDefaults:就傳入你讀取到的文件內(nèi)容。(這里應(yīng)該是和下面系統(tǒng)默認(rèn)創(chuàng)建的兩個(gè)域一樣苍在,默認(rèn)是在內(nèi)存中的绝页。)

3.- (void)addSuiteNamed:(NSString*)suiteName;

? - (void)removeSuiteNamed:(NSString*)suiteName;

//插入一個(gè)指定的域名到接收者的搜索列表荠商。這個(gè)指定的域名類(lèi)似于bundle identifier,但不是必須和應(yīng)用包綁定的续誉。一個(gè)suite可以用來(lái)保存首選項(xiàng)莱没,進(jìn)行多個(gè)應(yīng)用之間的通信。//從接受者的搜索列表中刪除一個(gè)指定的域名酷鸦。

4.@property(readonly,copy)NSArray *volatileDomainNames;

//這個(gè)屬性返回的是不穩(wěn)定的域(這里應(yīng)該是指只存儲(chǔ)在內(nèi)存中的NSUserDefaults對(duì)象饰躲,但沒(méi)有寫(xiě)入沙盒,是程序默認(rèn)創(chuàng)建的)的名字(也就是NSUserDefaults上面公開(kāi)的三個(gè)字符串中的兩個(gè))NSArgumentDomain和NSRegistrationDomain

FOUNDATION_EXPORTNSString*const NSGlobalDomain;//這個(gè)不在arr中,就是說(shuō)這個(gè)是穩(wěn)定的?(后面也沒(méi)找到以這個(gè)命名的域)

5.- (NSDictionary *)volatileDomainForName:(NSString*)domainName;

然后利用這個(gè)方法打印上面那個(gè)volatileDomainNames臼隔,發(fā)現(xiàn)NSArgumentDomain的域里是沒(méi)有內(nèi)容的嘹裂,NSRegistrationDomain里是些系統(tǒng)配置,內(nèi)容為:

dic={

AppleLanguages = ??? (

"zh-Hans-CN",

"en-CN",

en

);

NSInterfaceStyle = macintosh;

NSLanguages = ??? (

"zh-Hans-CN",

"en-CN",

en

);

}

6.- (void)setVolatileDomain:(NSDictionary *)domain forName:(NSString*)domainName;

? - (void)removeVolatileDomainForName:(NSString*)domainName;

往下看摔握,有個(gè)數(shù)組焦蘑,返回的是穩(wěn)定的域(這里應(yīng)該是指持久化的),打印出來(lái)發(fā)現(xiàn)都是我創(chuàng)建出來(lái)的plist文件:蟹ⅰ例嘱!所以,NSUserDefaults里的域應(yīng)該是NSUserDefaults對(duì)象的存儲(chǔ)空間宁舰!下面是打印的信息:

arr=(

xxxhuaMiss,

xxxhua,

“www.pxh.com.testNSUerDefaults”,

llla

)

7.- (NSArray*)persistentDomainNamesNS_DEPRECATED(10_0,10_9,2_0,7_0);

8.- (nullableNSDictionary *)persistentDomainForName:(NSString*)domainName;

- (void)setPersistentDomain:(NSDictionary*)domain forName:(NSString*)domainName;

- (void)removePersistentDomainForName:(NSString*)domainName;


9.- (BOOL)synchronize;

//將信息同步的方法拼卵,避免因?yàn)槌绦虍惓M顺龆鴮?dǎo)致信息保存失敗的意外。

10.- (BOOL)objectIsForcedForKey:(NSString*)key;

? ? - (BOOL)objectIsForcedForKey:(NSString*)key inDomain:(NSString*)domain;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蛮艰,一起剝皮案震驚了整個(gè)濱河市腋腮,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌壤蚜,老刑警劉巖即寡,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異袜刷,居然都是意外死亡聪富,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)著蟹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)墩蔓,“玉大人,你說(shuō)我怎么就攤上這事萧豆〖榕” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵涮雷,是天一觀的道長(zhǎng)阵面。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么样刷? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任仑扑,我火速辦了婚禮,結(jié)果婚禮上颂斜,老公的妹妹穿的比我還像新娘夫壁。我一直安慰自己,他們只是感情好沃疮,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布盒让。 她就那樣靜靜地躺著,像睡著了一般司蔬。 火紅的嫁衣襯著肌膚如雪邑茄。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,631評(píng)論 1 305
  • 那天俊啼,我揣著相機(jī)與錄音肺缕,去河邊找鬼。 笑死授帕,一個(gè)胖子當(dāng)著我的面吹牛同木,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播跛十,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼彤路,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了芥映?” 一聲冷哼從身側(cè)響起洲尊,我...
    開(kāi)封第一講書(shū)人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎奈偏,沒(méi)想到半個(gè)月后坞嘀,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡惊来,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年丽涩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片唁盏。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡内狸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出厘擂,到底是詐尸還是另有隱情,我是刑警寧澤锰瘸,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布刽严,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏舞萄。R本人自食惡果不足惜眨补,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望倒脓。 院中可真熱鬧撑螺,春花似錦、人聲如沸崎弃。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)饲做。三九已至线婚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間盆均,已是汗流浹背塞弊。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留泪姨,地道東北人游沿。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像肮砾,于是被迫代替她去往敵國(guó)和親诀黍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

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

  • *面試心聲:其實(shí)這些題本人都沒(méi)怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來(lái)就是把...
    Dove_iOS閱讀 27,146評(píng)論 30 470
  • NSUserDefaults是一個(gè)單例唇敞,在整個(gè)程序中只有一個(gè)實(shí)例對(duì)象蔗草,可以用于數(shù)據(jù)的永久保存。 他的作用一般是用來(lái)...
    AlenChen閱讀 504評(píng)論 0 51
  • NSUserDefaults# 一點(diǎn)認(rèn)知## 1.作用:-保存默認(rèn)用戶(hù)設(shè)置疆柔。讓你的程序把用戶(hù)體驗(yàn)做到做好-相當(dāng)于提...
    hoggenWang閱讀 1,201評(píng)論 0 0
  • iOS 開(kāi)発の結(jié)構(gòu) 畫(huà)面 UI UIWebview [[UIApplication sharedApplicati...
    RencaiXiong閱讀 586評(píng)論 0 0
  • 1.OC里用到集合類(lèi)是什么咒精? 基本類(lèi)型為:NSArray,NSSet以及NSDictionary 可變類(lèi)型為:NS...
    輕皺眉頭淺憂(yōu)思閱讀 1,378評(píng)論 0 3