ios - 在 iOS 上执行期间正在删除临时文件
问题描述
令人惊讶的是,经过一段时间的调试,我发现我的应用程序tmp
在 1 分钟左右后从目录中清除文件,没有任何其他用户操作,即使应用程序在前台运行也是如此。
根据文档,临时目录应在应用程序执行期间保留文件,并且仅在之后或最多在其启动时将其删除。
我不想在这里移动/复制到缓存目录作为解决方法,我更惊讶为什么会发生这种情况。如果这有帮助,我会从 Files 应用程序中选择(使用UIDocumentPickerViewController
)。
为了让它变得更好,有时有些文件会在那里持续很长时间,即使它们比其他文件更旧,在挑选后立即被删除。这可能会导致访问不正确,因为您的用户选择了一个文件,在应用程序仍在运行时去喝杯咖啡,然后按下按钮将其上传到某个地方或其他任何地方,文件就消失了。
我每次都可以用一个简单的应用程序复制它。
解决方案
在处理了一些临时文件之后,我不认为这是一个错误,它是临时文件在一段时间未打开时被删除的功能。我相信您可以通过区分普通文件和临时文件来更直接地管理它。根据此处更详细的文章,您可以使用该ManagedURL
协议来解决您的问题:
public protocol ManagedURL {
var contentURL: URL { get }
func keepAlive()
}
public extension ManagedURL {
public func keepAlive() { }
}
extension URL: ManagedURL {
public var contentURL: URL { return self }
}
要保持后台操作处于活动状态:
URLSession.shared.uploadTask(with: request, fromFile: fileToUpload.contentURL) { _, _, _ in
temporaryFile.keepAlive()
}
推荐阅读
- reactjs - React.js 得到“找不到模块 loadash.template”错误
- bash - 循环遍历一个序列
- javascript - 无法在响应模式下显示/隐藏表格列
- python - 如何通过for循环在gekko中制作约束?
- linux - Linux:使用 Stata 打开 .do 文件
- azure - IdentityServer MVC 在 Azure 中托管时抛出 OpenIdConnectProtocolException
- vim - 在 vim 搜索突出显示中保持语法颜色前景
- python - 将一项附加到多个列表 Python
- angular - 主域和子域.htaccess 中的不同角度应用程序刷新失败
- c# - 如何编译我的 C# 库,它使用外部依赖项而不将它们包含在库中?