Как удалить пользовательское значение по умолчанию в NSUserDefaults? - PullRequest
69 голосов
/ 27 августа 2009

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

Ответы [ 8 ]

130 голосов
/ 27 августа 2009

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

92 голосов
/ 15 мая 2012

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

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

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

[[NSUserDefaults standardUserDefaults] synchronize];

Описание класса NSUserDefaults

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

8 голосов
/ 23 марта 2015

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

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

или

NSUserDefaults.standardUserDefaults().removeObjectForKey("somestupidtext")
NSUserDefaults.standardUserDefaults().synchronize()
8 голосов
/ 26 февраля 2014
NSUserDefaults * removeUD = [NSUserDefaults standardUserDefaults];
[removeUD removeObjectForKey:@"shoping"];
[[NSUserDefaults standardUserDefaults]synchronize ];
5 голосов
/ 08 декабря 2016

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

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)
}
4 голосов
/ 14 октября 2016

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

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

1 голос
/ 08 мая 2018

In Swift 4

    UserDefaults.standard.removeObject(forKey: "your_key")
    UserDefaults.standard.synchronize()
0 голосов
/ 27 мая 2018

Быстрый путь

UserDefaults.standard.removeObject(forKey: "aKey")
UserDefaults.standard.synchronize()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...