var sharedPreference : UserDefaults = UserDefaults.init(suiteName: "userKeyValue")!
我正在这样创建UserDefault实例,很可能是它在设备中创建了一个名称为userKeyValue
的空间,并在其中保留所有键值对。
现在我想将内容迁移到其他UserDefault
实例
var oldSharedPreference : UserDefaults? = UserDefaults(suiteName: "userKeyValue")
if (oldSharedPreference != nil) {
print("Previous data found")
for (key, value) in oldSharedPreference!.dictionaryRepresentation() {
sharedPreference.set(value, forKey: key)
}
sharedPreference.synchronize()
oldSharedPreference!.removeSuite(named: "userKeyValue")
oldSharedPreference!.synchronize()
}
我一次又一次地多次安装该应用程序,但是每次获取日志Previous data found
时都会安装。我不知道我是否以正确的方式进行操作。
我只希望一旦运行这段代码,UserDefaults
的{{1}}实例的存在就不应该再存在了。
更新::创建实例时,我在UserDefault中获得了该内容
userKeyValue
答案 0 :(得分:0)
尝试下面提到的删除UserDefaults实例的代码
UserDefaults.standard.removeObject(forKey: "userKeyValue")
答案 1 :(得分:0)
您尝试删除整个域吗?
UserDefaults.standard.removePersistentDomain(forName: "userKeyValue")
UserDefaults.standard.synchronize()
从Apple documentation
调用此方法等效于通过传递domainName的init(suiteName :)初始化用户默认对象,并在其每个键上调用removeObject(forKey :)方法。