如何删除所有UserDefaults数据? – 斯威夫特
我有这个代码从应用程序中删除所有UserDefaults
数据:
let domain = Bundle.main.bundleIdentifier! UserDefaults.standard.removePersistentDomain(forName: domain) print(Array(UserDefaults.standard.dictionaryRepresentation().keys).count)
但我从印刷线上得到了10
。 不应该是0
吗?
问题是您在清除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,但只是在这里它是在Swift。
func resetDefaults() { let defaults = UserDefaults.standard let dictionary = defaults.dictionaryRepresentation() dictionary.keys.forEach { key in defaults.removeObject(forKey: key) } }