在UserDefault

时间:2019-06-10 09:38:29

标签: ios swift userdefaults

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

2 个答案:

答案 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 :)方法。