Ziz*_*zoo 30 nsuserdefaults ios swift
我有这个代码UserDefaults从应用程序中删除所有数据:
let domain = Bundle.main.bundleIdentifier!
UserDefaults.standard.removePersistentDomain(forName: domain)
print(Array(UserDefaults.standard.dictionaryRepresentation().keys).count)
Run Code Online (Sandbox Code Playgroud)
但是我10从印刷线上得到了.不应该0吗?
Lef*_*ris 66
问题是您在清除UserDefaults内容后立即打印它们,但您没有手动同步它们.
let domain = Bundle.main.bundleIdentifier!
UserDefaults.standard.removePersistentDomain(forName: domain)
UserDefaults.standard.synchronize()
print(Array(UserDefaults.standard.dictionaryRepresentation().keys).count)
Run Code Online (Sandbox Code Playgroud)
这应该可以解决问题.
现在您通常不需要synchronize手动调用,因为系统会定期自动同步userDefaults,但如果您需要立即推送更改,则需要通过synchronize调用强制更新.
因为此方法是定期自动调用的,所以只有在您无法等待自动同步时(例如,如果您的应用程序即将退出)或者您希望将用户默认值更新为磁盘上的内容,请使用此方法你没有做任何改变.
Rya*_*los 30
这个答案在这里找到/sf/answers/475799341/,但只是在这里它是在Swift.
func resetDefaults() {
let defaults = UserDefaults.standard
let dictionary = defaults.dictionaryRepresentation()
dictionary.keys.forEach { key in
defaults.removeObject(forKey: key)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38202 次 |
| 最近记录: |