我在开始时在我的应用中为用户默认设置了一些值。然后这些值可能会被用户覆盖,我想删除这些设置。
当我尝试删除所有默认值时,删除了一些键值但是没有立即删除几个键。当我杀了app&再次回到应用程序它工作删除。正如我所料,它应该在删除键后立即工作
这是我在swift 3.2中设置默认值
的代码let sharedUserDefaultsWithExtension = UserDefaults(suiteName: "GROUP_IDENTIFIER")
sharedUserDefaultsWithExtension?.setValue(newValue, forKey: "My_Key")
sharedUserDefaultsWithExtension?.synchronize()
删除所有用户默认值的代码
let sharedUserDefaultsWithExtension = UserDefaults(suiteName: "GROUP_IDENTIFIER")
for key in (sharedUserDefaultsWithExtension?.dictionaryRepresentation().keys)! {
sharedUserDefaultsWithExtension?.removeObject(forKey: key)
}
sharedUserDefaultsWithExtension?.synchronize()
有什么想法吗?
答案 0 :(得分:-1)
如果要删除userdefault
中的所有数据,请使用:
let bundleIdentifier = Bundle.main.bundleIdentifier!
UserDefaults.standard.removePersistentDomain(forName: bundleIdentifier)
对于set
用户默认值中的数据:
UserDefaults.standard.setValue("jogendar", forKey: "My_Key")
以您的方式,您需要在删除后同步数据,但不要在文档https://developer.apple.com/documentation/foundation/userdefaults/1414005-synchronize
中提及synchronize()
synchronize()
: - 等待默认数据库的任何挂起的异步更新并返回;这种方法是不必要的,不应该使用。
let sharedUserDefaultsWithExtension = UserDefaults(suiteName: "GROUP_IDENTIFIER")
for key in (sharedUserDefaultsWithExtension?.dictionaryRepresentation().keys)! {
sharedUserDefaultsWithExtension?.removeObject(forKey: key)
sharedUserDefaultsWithExtension?.synchronize()
}