如何清除Objective-C中的所有NSUserDefaults值?

时间:2015-04-09 10:44:06

标签: ios objective-c nsuserdefaults

我在我的应用中使用 NSUserDefaults 很多时间来存储一些值,但是在“刷新按钮”我要清除所有存储的值,有没有办法清除所有NSUserDefaults值?< / p>

2 个答案:

答案 0 :(得分:9)

您可以使用以下代码删除所有存储的值,请参阅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]];

Swift

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

答案 1 :(得分:5)

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

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

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

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