天天看點

NSUserDefaults删除整個plist檔案

我們知道NSUserDefaults可以儲存某些資訊在本地,例如登入的賬号,密碼等等,當我們使用NSUserDefaults時,它是将資訊寫入到本地的一個plist檔案裡,我們都知道 删除plist裡的某一項内容直接用[[NSUserDefaults standardUserDefaults] removeObjectForKey:key];這樣就可以直接删除 plist中的某一個特定的項的内容了,

但是,如果要把整個plist檔案删除,那應該怎麼樣呢???

其實也不難,我們要知道删除整個plist檔案實際上就是把plist檔案中的所有item删除就行了,也就是說,如果plist檔案裡隻有一項内容,

NSUserDefaults *userDefatluts = [NSUserDefaults standardUserDefaults];

[userDefaults setObject:"張三" forKey:@"name"];

[userDefaults synchronize];   //這行代碼一定要加,雖然有時候不加這一行代碼也能儲存成功,但是如果程式運作占用比較大的記憶體的時候不加這行代碼,可能會造成無法寫入plist檔案中,我試驗過,真的是這樣的

這樣,我們就往plist檔案中寫入了一個name的item。

接下來,我們這麼寫:

[userDefaults removeObjectForKey:@"name"];

[userDefaults synchronize];

這樣你會發現,plist檔案消失了,但是如果我們寫入的内容不僅僅是一項那要怎麼删除所有的呢?

其實原理和隻有一個item時候是一樣的,我們删掉plist檔案也就是相當于把plist檔案裡的所有item依次删除,對,就這麼簡單。

下面看一下代碼:

我們先要取到plist檔案裡的所有的Key 否則 是不能用 removeObjectForKey:key 這個方法來删除的,那麼怎樣獲得plist檔案中素有item的key呢,dictionary 有一個方法 [dictionary allKeys];傳回值是一個數組,這樣我們能拿到dictionary中所有的 key,

我們知道我們寫入的plist檔案中的項目是以一個字典的形式儲存的,是以,

代碼如下:

NSDictionary *dictionary = [userDefaults dictionaryRepresentation];

for(NSString* key in [dictionary allKeys]){

    [userDefaults removeObjectForKey:key];

    [userDefaults synchronize];

}

這樣自己通過 NSUserDefaults 寫入到本地的plist檔案就能 把整個檔案删除了。

本文轉自 卓行天下  51CTO部落格,原文連結:http://blog.51cto.com/9951038/1745321,如需轉載請自行聯系原作者

繼續閱讀