我的应用程序下载并保存一些支持数据到“库/缓存”目录。据文档称,
使用此目录可以编写应用程序可以轻松重新创建的任何特定于应用程序的支持文件。您的应用程序通常负责管理该目录的内容,并根据需要添加和删除文件。在iOS 2.2及更高版本中,iTunes或iCloud不备份该目录的内容。此外,在设备完全恢复期间,系统将删除此目录中的文件。在iOS 5.0及更高版本中,当系统磁盘空间非常低时,系统可能会删除缓存目录。在应用程序运行时,这种情况永远不会发生。但是,请注意,从备份恢复不一定是缓存目录可以擦除的唯一条件。
因此,系统可能会清除此文件夹。我的应用程序支持的数据并不重要,所以不需要把它放在文档或其他地方。但我想看看它是如何处理‘缓存’文件夹将突然清除。
当然,如果文件存在,我可以使用NSFileManager进行检查。只需使用文件或重新下载。但这里有个诡计。我的应用程序可以从后台服务器下载一些文件。在下载文件时,它存储在‘Cache/com.apple.nsurlsessiond/APP_ID’,并且无法检查文件是否存在(因为这个步骤中的文件完全由SDK管理)。我在NSURLSession委托中添加了本例的错误处理,现在需要在“真实生活”中检查它。
有没有办法直接或间接迫使系统清除所有应用程序的“缓存”目录?
发布于 2019-09-03 18:05:50
可以通过以下方式删除缓存文件夹中的所有文件
func removeNetworkCache() {
let cachePath = (NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.cachesDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)[0])
let appId = Bundle.main.infoDictionary!["CFBundleIdentifier"] as! String
do {
let content = try FileManager.default.contentsOfDirectory(atPath: cachePath)
for file in content{
let fullPath = "\(cachePath)/\(appId)/\(file)"
try FileManager.default.removeItem(atPath: fullPath)
}
} catch {
print("ERROR DESCRIPTION: \(error)")
}
}发布于 2019-09-03 19:24:46
您可以使用“常规方式”卸载应用程序,或者,如果您在模拟器上运行,可以使用以下终端命令:xcrun simctl uninstall booted Your.app。
https://stackoverflow.com/questions/57776525
复制相似问题