Т.е. мое приложение вначале устанавливает некоторые стандартные значения по умолчанию. Затем эти значения могут быть переопределены пользователем. И когда пользователь что-то портит, я хочу вернуть эти настройки обратно к значениям по умолчанию для моего приложения. Насколько я понимаю, значения по умолчанию для приложения - это другой словарь, чем пользовательские значения по умолчанию, а пользовательские значения по умолчанию просто переопределяют эти значения по умолчанию для приложения. Но я не видел способов удаления пользовательских настроек по умолчанию. Есть идеи?
79
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()
источник
.synchronize()
«не нужно и не следует использовать. Developer.apple.com/documentation/foundation/userdefaults/…Чтобы удалить определенное значение KEY:
Swift 3+
UserDefaults.standard.removeObject(forKey: "KEY")
Obj-C
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"KEY"]; [[NSUserDefaults standardUserDefaults] synchronize];
Если вам нужно сбросить 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) }
источник
Обновлено для кода Swift 3.0:
UserDefaults.standard.removeObject(forKey: "YOURKEY")
источник
Value of type 'UserDefaults' has no member 'remove'
В Swift 4
UserDefaults.standard.removeObject(forKey: "your_key") UserDefaults.standard.synchronize()
источник
Быстрый путь
UserDefaults.standard.removeObject(forKey: "aKey") UserDefaults.standard.synchronize()
источник