Как удалить пользовательское значение по умолчанию в NSUserDefaults?


т. е., мое приложение устанавливает некоторые стандартные значения по умолчанию в начале. Затем эти значения могут быть переопределены пользователем. И когда пользователь все испортит, я хочу вернуть эти настройки к значениям по умолчанию для моего приложения. Как я понимаю, приложение по умолчанию другой словарь значений по умолчанию для пользователя, и по умолчанию пользователь просто переопределить эти приложения по умолчанию. Но я не видел методов для удаления пользовательских настроек по умолчанию. Есть идеи?

8 66

8 ответов:

попробовать removeObjectForKey -- это должно дать вам возможность удалить предпочтений.

используйте этот код

[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"MyKey"];

не забудьте синхронизировать, если вы хотите сразу сохранить

[[NSUserDefaults standardUserDefaults] synchronize];

Ссылка На Класс NSUserDefaults

синхронизация - этот метод автоматически вызывается с периодическими интервалами, используйте этот метод только в том случае, если вы не можете дождаться автоматической синхронизации (например, если ваше приложение собирается выйти) или если вы хотите обновить пользовательские значения по умолчанию до того, что находится на диске даже если вы не внесли никаких изменений.

NSUserDefaults * removeUD = [NSUserDefaults standardUserDefaults];
[removeUD removeObjectForKey:@"shoping"];
[[NSUserDefaults standardUserDefaults]synchronize ];

Swift версия для легкого копирования вставки:

var idForUserDefaults = "somestupidtext"
var userDefaults = NSUserDefaults.standardUserDefaults()
userDefaults.removeObjectForKey(idForUserDefaults)
userDefaults.synchronize()

или

NSUserDefaults.standardUserDefaults().removeObjectForKey("somestupidtext")
NSUserDefaults.standardUserDefaults().synchronize()

обновлено для кода Swift 3.0:

UserDefaults.standard.removeObject(forKey: "YOURKEY")

чтобы удалить определенное значение ключа:

Swift 3+

UserDefaults.standard.removeObject(forKey: "KEY")

Obj-C

[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"KEY"];
[[NSUserDefaults standardUserDefaults] synchronize];

Если вам нужно сброс UserDefaults / очистить все данные:

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

Swift 3:

if let bundle = Bundle.main.bundleIdentifier {
    UserDefaults.standard.removePersistentDomain(forName: bundle)
}

В Swift 4

    UserDefaults.standard.removeObject(forKey: "your_key")
    UserDefaults.standard.synchronize()

Свифт способом

UserDefaults.standard.removeObject(forKey: "aKey")
UserDefaults.standard.synchronize()