nsuserdefault有键值设置如何删除它?

时间:2013-09-16 12:00:06

标签: ios nsuserdefaults

我已经尝试在应用启动时删除所有键值对,并在我检查键时再次删除这些键保存在NSUserDefault中。我存储了这些偏好。

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


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

当我将新的动态值存储到NSUserDefaults时,我想选择除这些首选项之外的所有键。

请帮我解决这个问题。

提前致谢

3 个答案:

答案 0 :(得分:2)

不要做你想做的事。请勿篡改Apple添加的任何密钥。保留自己的一组密钥(最好在名称上加上前缀)并仅编辑那些密钥。

一般情况下,除非您的应用中有特定要求,否则不应删除密钥。您应该做的是在应用启动时为每个键设置默认值:

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

这些默认值在应用程序运行时有效但不会保存。如果您使用任何set...:forKey:方法和synchronize设置任何内容,则会覆盖默认值并保存。

答案 1 :(得分:1)

试试这个

- (NSDictionary *) dictionaryRepresentation。在标准用户默认值上使用此方法,您可以获取用户默认值中所有键的列表。然后,您可以使用它来清除用户默认值:

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

removeObjectForKey - 这可以让您删除偏好设置。

答案 2 :(得分:0)

您可以通过调用此链接删除与您的应用相关联的NSUserDefaults中的所有内容。

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

这应该为您提供一个清晰的平板,用于将信息保存到用户默认值。