我们遇到了奇怪的行为。
- 从试飞中安装应用程序
- 应用程序在NSDocumentDirectory中创建本地sqlite数据库
- 用户删除应用程序
- 用户从试飞中重新安装应用程序(更新版本(
- 应用程序在应用程序中看到旧数据库
这种情况已经发生过好几次了。我的理解是,应用程序应该在删除后删除所有内容。然而,这种情况时有发生。
以前有人看过这个问题吗?
我认为这是由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?