iOS-删除应用程序后不会删除应用程序文件

时间:2018-07-17 18:24:42

标签: ios database sqlite

我们遇到了奇怪的行为。

  1. 通过试飞安装应用程序
  2. 应用程序在NSDocumentDirectory中创建本地sqlite数据库
  3. 用户删除应用程序
  4. 用户从测试飞行中重新安装了该应用程序(更新版本)
  5. 应用在应用中看到旧数据库

这已经发生了好几次了。我的理解是,一旦删除应用程序,应用程序应该删除所有内容。但是这种情况是间歇性发生的。

有人以前见过这个问题吗?

1 个答案:

答案 0 :(得分:2)

我认为这是由 iCloud备份和还原功能引起的。如果您未明确设置排除备份密钥,则iOS会自动备份文档目录中的文件。在您的情况下,先前的数据库已备份到iCloud中,当您重新安装该应用程序时,iCloud会还原数据库文件。这就是为什么您看到旧数据的原因。如果您不需要备份应用程序的数据库文件,请使用以下代码:

雨燕4:

do
{
    var resourceValues = URLResourceValues()
    resourceValues.isExcludedFromBackup = true
    try databaseURL.setResourceValues(resourceValues)
}
catch
{
   print(error.localizedDescription)
}

旧版本代码

do
{
   // Database URL
   try databaseURL.setResourceValue(true, forKey:NSURLIsExcludedFromBackupKey)
}
catch let error as NSError
{
   print("Error excluding \(URL.lastPathComponent) from backup \(error)");
}

参考:How do I prevent files from being backed up to iCloud and iTunes?