我正在尝试采用 iCloud Drive 来存储我的应用程序数据的备份,每个备份使用一个文件,如果相关的话,它们是具有自定义扩展名的简单 XML 文件。文件创建和上传工作正常,但是当我现在试图让用户手动删除备份时,我发现我无法以编程方式删除文件,但如果我从 iOS 上的应用程序或文件夹中转到 iCloud Drive,我可以做到在 macOS 上的 Finder 中。
为了保存文件,我首先检索容器的根目录
FileManager.default.url(forUbiquityContainerIdentifier: nil)?.appendingPathComponent("Documents")
并创建Document文件夹,如果它不存在,因为我希望用户能够查看和编辑文件,在临时目录中本地创建文件后,我上传它
let file = FileManager.default
if file.fileExists(atPath: remotePath.path) {
try? file.removeItem(at: remotePath)
}
try? file.setUbiquitous(true, itemAt: localPath, destinationURL: remotePath)
remotePath
之前检索到的路径在哪里,并附加了文件名。要加载文件,我使用 aNSMetadataQuery
并NSMetadataItemURLKey
在每个返回的项目上获取每个文件的路径,这工作正常但是当我尝试
try? FileManager.default.removeItem(at: retrievedPath)
如果同一设备创建了文件,则它可以工作,但如果它来自另一个设备,它总是会失败,并且错误表示该文件在指定路径中不存在。
为了清楚起见,我删除了错误处理代码,但我已经测试了这种行为来检查抛出的错误。
我如何从其他设备上删除任何文件,我是否缺少一些步骤?