Как удалить все данные UserDefaults? - Свифт [дубликат]
этот вопрос уже есть ответ здесь:
у меня есть этот код, чтобы удалить все UserDefaults
данные из приложения:
let domain = Bundle.main.bundleIdentifier!
UserDefaults.standard.removePersistentDomain(forName: domain)
print(Array(UserDefaults.standard.dictionaryRepresentation().keys).count)
но я 10
из строки печати. Разве это не должно быть 0
?
2 ответов
проблема в том, что вы печатаете содержимое UserDefaults сразу после их очистки, но вы не синхронизируете их вручную.
let domain = Bundle.main.bundleIdentifier!
UserDefaults.standard.removePersistentDomain(forName: domain)
UserDefaults.standard.synchronize()
print(Array(UserDefaults.standard.dictionaryRepresentation().keys).count)
это должно сделать трюк.
Теперь вам не нужно звонить synchronize
вручную, так как система периодически синхронизирует userDefaults автоматически, но если вам нужно немедленно нажать изменения, то вам нужно принудительно обновить через synchronize
звонок.
поскольку этот метод автоматически вызывается с периодическими интервалами, используйте этот метод только в том случае, если вы не можете дождаться автоматической синхронизации (например, если ваше приложение собирается выйти) или если вы хотите обновить пользовательские значения по умолчанию до того, что находится на диске, даже если вы не внесли никаких изменений.
этот ответ найден здесь https://stackoverflow.com/a/6797133/563381 но просто incase здесь это в Swift.
func resetDefaults() {
let defaults = UserDefaults.standard
let dictionary = defaults.dictionaryRepresentation()
dictionary.keys.forEach { key in
defaults.removeObject(forKey: key)
}
}