我的领域文件会在一段时间后自动清除所有数据



我的应用程序(ios(使用领域数据库保存数据。但是,一些用户反馈他们丢失了数据?他们表示,在遇到这个问题之前,他们使用了该应用程序很长时间。

最后,上周我遇到了这个麻烦。我在缓存目录中创建了一个名为RealmFolder的目录。在此目录中配置文件领域。

我想系统可能会自动清除缓存目录中的所有文件(尚未验证(。我试着研究,但仍然找不到解决方案,因为我无法重现这个bug。现在我有了一个新的文件夹,新的领域URL。

这是我的代码配置领域:

class LocalDAO {
static let shareInstance = LocalDAO()
var DBName : String = ""
private var realmUrl : URL{
get {
let cacheUrl = FileManager.default.urls(for: FileManager.SearchPathDirectory.cachesDirectory, in: FileManager.SearchPathDomainMask.userDomainMask)[0]
let url = cacheUrl.appendingPathComponent("RealmFolder").appendingPathComponent(self.DBName)
return url
}
}
var config = Realm.Configuration(
schemaVersion: SCHEMA_VERSION,
migrationBlock: { migration, oldSchemaVersion in
if (oldSchemaVersion < SCHEMA_VERSION) {
}
})
func createRealmDirection(){
let cacheUrl = FileManager.default.urls(for: FileManager.SearchPathDirectory.cachesDirectory, in: FileManager.SearchPathDomainMask.userDomainMask)[0]
let directionName = "RealmFolder"
let path = cacheUrl.appendingPathComponent(directionName)
if !FileManager.default.fileExists(atPath: path.path){
try? FileManager.default.createDirectory(atPath: path.path, withIntermediateDirectories: true, attributes: nil)
}
}
func setDefaultRealmForUser(userId: String) {
self.DBName = "DB_(userId).realm"
config.fileURL = realmUrl
Realm.Configuration.defaultConfiguration = config
}
}

Appple文档

您应该将应用程序的文件放在哪里

防止iOS设备上的同步和备份过程很长一段时间以来,要有选择地放置文件。存储的应用程序大文件可能会减慢备份到iTunes或iCloud。这些应用程序还可以消耗大量用户的可用存储,这可能会鼓励用户删除应用程序或禁用将该应用程序的数据备份到iCloud。考虑到这一点,你应根据以下指南存储应用程序数据:

  • 将用户数据放入Documents/中。用户数据通常包括任何文件您可能希望向用户公开您可能想要的任何内容创建、导入、删除或编辑。对于绘图应用程序,用户数据包括用户可能创建的任何图形文件。对于文本编辑器,它包括文本文件。视频和音频应用程序甚至可能包括用户已下载以供以后观看或收听的文件。

  • 将应用程序创建的支持文件放入库/应用程序支持/目录通常,此目录包括应用程序使用来运行,但应该对用户保持隐藏。这目录还可以包括数据文件、配置文件、模板以及从应用捆绑包加载的资源的修改版本。

  • 请记住,Documents/和Application Support/中的文件都有备份默认情况下为up。您可以通过调用从备份中排除文件-[NSURL setResourceValue:forKey:error:]使用NSURLIsExcludedFromBackupKey键。任何可以重新创建或下载的必须从备份中排除。尤其是对于大型媒体文件非常重要。如果您的应用程序下载视频或音频文件,请确保它们不包含在备份中。

  • 将临时数据放在tmp/目录中。临时数据包括任何不需要长期保存的数据时间记得在处理完这些文件后删除它们,这样它们不会继续消耗用户设备上的空间。这个当你的应用程序不在时,系统会定期清除这些文件跑步因此,不能依赖这些文件在您的应用程序终止。

  • 将数据缓存文件放在Library/Caches/目录中。缓存数据可以用于任何需要持续时间超过临时时间的数据数据,但没有支持文件那么长一般来说应用程序不需要缓存数据就可以正常运行,但它可以使用缓存数据来提高性能。缓存数据示例包括(但不限于(数据库高速缓存文件,可下载内容请注意,系统可能会删除缓存/目录以释放磁盘空间,因此您的应用程序必须能够根据需要重新创建或下载这些文件

因此您应该使用另一个文件夹作为数据库位置或添加数据恢复功能

最新更新