Подтвердить что ты не робот

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

I.e., мое приложение устанавливает некоторые стандартные значения по умолчанию в начале. Тогда эти значения могут быть переопределены пользователем. И когда пользователь все испортил, я хочу, чтобы эти параметры возвращались к значениям по умолчанию для моего приложения. Насколько я понимаю, значения по умолчанию для приложений - это разные словарные слова, чем пользовательские значения по умолчанию, а пользовательские значения по умолчанию просто переопределяют эти значения по умолчанию для приложения. Но я не видел методов удаления пользовательских значений по умолчанию. Любая идея?

4b9b3361

Ответ 1

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

Ответ 2

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

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

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

[[NSUserDefaults standardUserDefaults] synchronize];

Ссылка на класс NSUserDefaults

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

Ответ 3

Быстрая версия для удобного копирования:

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

или

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

Ответ 4

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

Ответ 5

Обновлен для Swift 3.0:

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

Ответ 6

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

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

Если вам нужно reset UserDefaults/Clear All datas:

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

Swift 3:

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