令人惊讶的是,经过一段时间的调试之后,我发现我的应用程序在1分钟左右就从tmp目录中清除文件,而没有任何其他用户操作,即使应用程序在前台运行。
因此,对于docs,临时目录应该在应用程序执行期间保存这些文件,并且只在启动后或最多在启动时删除它。
作为解决办法,我不想移动/复制到缓存目录,更让我惊讶的是为什么会发生这种情况。如果这有帮助的话,我会从Files应用程序中挑选(使用UIDocumentPickerViewController)。
为了使它更好,有时有一些文件在那里保存了很长时间,即使它们比其他文件更老,在选择之后它们会立即被删除。这可能导致访问错误,因为你的用户选择了一个文件,在应用程序还在运行的时候去喝杯咖啡,然后按下按钮将它上传到某个地方或者其他地方,然后文件就消失了。
我每次都可以用一个简单的应用程序复制它。
发布于 2022-02-12 19:42:25
在处理了一些临时文件之后,我不认为这是一个bug,它是临时文件在一段时间内不打开时将被删除的特性。我相信,通过区分正常文件和临时文件,您可以更直接地管理这些文件。根据一篇更详细的文章这里,您可以使用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()
}https://stackoverflow.com/questions/62766286
复制相似问题