簡體   English   中英

nsuserdefault的鍵值設置如何刪除?

[英]nsuserdefault has key-values set how to delete it?

我已經嘗試在應用程序啟動時刪除所有鍵值對,並在我檢查鍵時再次刪除這些鍵,並將它們保存在NSUserDefault中。 我存儲了這些首選項。

NSArray *keys = [[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys];
NSLog(@"all keys %@", keys);


keys (
    NSLanguages,
    AppleITunesStoreItemKinds,
    AppleLocale,
    AppleLanguages,
    NSInterfaceStyle
)

當我將新的動態值存儲到NSUserDefaults時,我想選擇除這些首選項以外的所有鍵。

請幫我解決這個問題。

提前致謝

不要做你想做的事。 不要篡改Apple添加的任何鍵。 保留自己的一組鍵(最好在名稱上帶有前綴),然后僅編輯它們。

通常,除非您的應用有特定要求,否則您不應該刪除密鑰。 您應該做的是在應用啟動時為每個鍵設置默認值:

[[NSUserDefaults standardUserDefaults] registerDefaults:@{... : ...}];

這些默認設置在應用程序運行時有效,但不會保存。 如果使用任何set...:forKey:方法設置任何內容並進行synchronize則它們將覆蓋默認值並保存。

嘗試這個

- (NSDictionary *) dictionaryRepresentation 在標准用戶默認值上使用此方法,您可以獲得用戶默認值中所有鍵的列表。 然后,您可以使用它清除用戶默認設置:

    NSUserDefaults * defs = [NSUserDefaults standardUserDefaults];
    NSDictionary * dict = [defs dictionaryRepresentation];
    for (id key in dict) {
        [defs removeObjectForKey:key];
    }
    [defs synchronize];

removeObjectForKey-應該可以刪除首選項。

您可以通過調用此操作來刪除與應用程序關聯的NSUserDefaults中的所有內容。

// remove entire user defaults
NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];
[[NSUserDefaults standardUserDefaults] synchronize]; // not sure if needed, but never hurts

這樣可以使您將信息保存到用戶默認設置中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM