iOS-删除应用程序时未删除应用程序文件



我们遇到了奇怪的行为。

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

这种情况已经发生过好几次了。我的理解是,应用程序应该在删除后删除所有内容。然而,这种情况时有发生。

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

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

Swift 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)");
}

参考:如何防止文件备份到iCloud和iTunes?

最新更新