iOS學(xué)習(xí)筆記之NSUserDefaults

NSUserDefaults是單例類。
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSUserDefaults的用法:

1. 存

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setBool:YES forKey:@"isLogin"];
[userDefaults setObject:@"15288888888" forKey:@"phoneNumber"];
[userDefaults synchronize];

synchronize的作用:NSUserDefaults是定時(shí)把緩存中的數(shù)據(jù)寫(xiě)入磁盤(pán)的,而不是即時(shí)寫(xiě)入,為了防止在寫(xiě)完NSUserDefaults后程序退出導(dǎo)致的數(shù)據(jù)丟失,可以在寫(xiě)入數(shù)據(jù)后使用synchronize強(qiáng)制立即將數(shù)據(jù)寫(xiě)入磁盤(pán)。

查看數(shù)據(jù)存放的位置

NSLog(@"%@", NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES).firstObject);

在Finder中前往(快捷鍵 command + shift + G)打印出來(lái)的沙盒地址,可以看到如圖所示的 plist 文件,文件名為工程的 Bundle Identifier 加上后綴 plist,這個(gè)文件名在下文中清空數(shù)據(jù)的時(shí)候會(huì)用到。

數(shù)據(jù)在沙盒中的位置

打開(kāi)plist文件就可以看到數(shù)據(jù)已經(jīng)存到plist文件中了。


plist文件數(shù)據(jù)

2. 取

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
BOOL isLogin = [userDefaults boolForKey:@"isLogin"];
NSString *phoneNumber = [userDefaults objectForKey:@"phoneNumber"];

3. 刪

調(diào)用removeObjectForKey:方法

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults removeObjectForKey:@"isLogin"];
[userDefaults removeObjectForKey:@"phoneNumber"];

直接賦值為nil,也可以刪除

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:nil forKey:@"phoneNumber"];
[userDefaults setObject:nil forKey:@"isLogin"];

4. 改

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:@"15212345678" forKey:@"phoneNumber"];
[userDefaults setObject:NO forKey:@"isLogin"];

5. 清空

方法一:上文提到的文件名,這里直接通過(guò)文件名查找到文件清空

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSString *bundleID = [[NSBundle mainBundle] bundleIdentifier];
[userDefaults removePersistentDomainForName:bundleID];

方法二:遍歷字典清空

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSDictionary *dict = [userDefaults dictionaryRepresentation];
for(id key in dict) {
    [userDefaults removeObjectForKey:key];
}
[userDefaults synchronize];
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 最近公司項(xiàng)目中使用了本地存儲(chǔ),所以趁著周六日來(lái)整理一下在Swift中的幾種數(shù)據(jù)存儲(chǔ)方式。 一、plist文件存儲(chǔ) ...
    大臉貓121閱讀 5,100評(píng)論 0 11
  • 1.自定義控件 a.繼承某個(gè)控件 b.重寫(xiě)initWithFrame方法可以設(shè)置一些它的屬性 c.在layouts...
    圍繞的城閱讀 3,694評(píng)論 2 4
  • 前言 在iOS開(kāi)發(fā)中必不可少的要用到數(shù)據(jù)存儲(chǔ),數(shù)據(jù)的處理是iOS開(kāi)發(fā)中的核心技術(shù),適當(dāng)?shù)膶?duì)數(shù)據(jù)進(jìn)行持久化存儲(chǔ)可以實(shí)...
    若小北00閱讀 8,235評(píng)論 6 28
  • 1.屬性readwrite,readonly,assign,retain,copy,nonatomic 各是什么作...
    曾令偉閱讀 1,127評(píng)論 0 10
  • 對(duì)母親的評(píng)價(jià) 我的母親是一位善良彪悍強(qiáng)勢(shì)喜歡干凈的女人,像這樣一位出色的女人,上得了廳堂,下得了廚房很難不給她一個(gè)...
    艷會(huì)閱讀 410評(píng)論 0 1

友情鏈接更多精彩內(nèi)容