【问题标题】:how to clear all NSUserDefaults values in objective-C? [duplicate]如何清除objective-C中的所有NSUserDefaults值? [复制]
【发布时间】:2015-06-14 16:35:21
【问题描述】:

我在我的应用程序中使用 NSUserDefaults 很多时间来存储一些值,但是在“刷新按钮”上我想清除所有存储的值,有没有办法清除所有 NSUserDefaults 值?

【问题讨论】:

    标签: ios objective-c nsuserdefaults


    【解决方案1】:

    您可以使用以下代码删除所有存储的值,请参阅here 了解更多详情

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

    或者用最短的方式

    [[NSUserDefaults standardUserDefaults] setPersistentDomain:[NSDictionary dictionary] forName:[[NSBundle mainBundle] bundleIdentifier]];
    

    斯威夫特

    let defaults = UserDefaults.standard
    defaults.dictionaryRepresentation().keys.forEach { (key) in
        defaults.removeObject(forKey: key)
    }
    

    【讨论】:

    • 单行解决方案对我不起作用。但是,removeUserDefaults() 函数完成了这项工作。
    【解决方案2】:

    您可以使用以下语句清除用户默认值 -

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

    您可以在刷新按钮上调用选择器并将上述语句保留在其中,因为-

    - (void) refreshUserDefaults
    {
        NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];
        [[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];
    }
    

    【讨论】:

    • 您的第二个选项在这里无效,并且看起来您误解了这个问题。这不是被问到的,他们明确指出按下重置按钮时要清除NSUserDefaults,按下应用程序中的重置按钮会如何发生 2?
    • 不用担心,至少你看到了自己的错误
    猜你喜欢
    • 2012-04-22
    • 2010-10-07
    • 2013-07-05
    • 1970-01-01
    • 2017-12-18
    • 2013-08-11
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多