在一台设备上写入的文件无法在另一台设备上打开
File written on one device can't be opened on another
这个问题是五年前提出的,但没有解决,所以我假设这不是同一个问题。
我有一个可以将多个文件写入 iCloud 的应用程序。我可以在 iCloud.com 以及我的 Mac iCloud 文件夹中看到更新的当前文件,但我只能在第二个设备。我尝试读取文件的应用程序失败并显示 "file not found"。如果我从强制下载的文件应用程序打开文件,然后 运行 我的应用程序,它打开并读取文件就好了。所以,我的问题是,如何以编程方式强制下载文件。我尝试将“.icloud”附加到文件名,但仍然显示未找到。
有什么建议吗?
基本思路是检查文件是否可用。如果不是,只需使用 startDownloadingUbiquitousItem(at url: URL)
请求文件开始下载。
完整的 iCloud 文档可在此处获得:https://developer.apple.com/library/content/documentation/General/Conceptual/iCloudDesignGuide/Chapters/DesigningForDocumentsIniCloud.html
更新:
请注意,这是一个旨在描述基本思想的示例代码解决方案。
let fileManager = FileManager.default
let iCloudDocumentsURL = FileManager.default.url(forUbiquityContainerIdentifier: nil)?.appendingPathComponent("Documents", isDirectory: true)
let iCloudDocumentToCheckURL = iCloudDocumentsURL?.appendingPathComponent("whateverFileName", isDirectory: false)
guard let iCloudDocumentPath = iCloudDocumentsURL?.path else {
return
}
if fileManager.fileExists(atPath: iCloudDocumentPath) {
// Do something with the document
} else {
do {
try fileManager.startDownloadingUbiquitousItem(at: iCloudDocumentToCheckURL!)
// Will start downloading the file
} catch let error as NSError {
print("Unresolved error \(error), \(error.userInfo)")
}
}
这个问题是五年前提出的,但没有解决,所以我假设这不是同一个问题。
我有一个可以将多个文件写入 iCloud 的应用程序。我可以在 iCloud.com 以及我的 Mac iCloud 文件夹中看到更新的当前文件,但我只能在第二个设备。我尝试读取文件的应用程序失败并显示 "file not found"。如果我从强制下载的文件应用程序打开文件,然后 运行 我的应用程序,它打开并读取文件就好了。所以,我的问题是,如何以编程方式强制下载文件。我尝试将“.icloud”附加到文件名,但仍然显示未找到。
有什么建议吗?
基本思路是检查文件是否可用。如果不是,只需使用 startDownloadingUbiquitousItem(at url: URL)
请求文件开始下载。
完整的 iCloud 文档可在此处获得:https://developer.apple.com/library/content/documentation/General/Conceptual/iCloudDesignGuide/Chapters/DesigningForDocumentsIniCloud.html
更新: 请注意,这是一个旨在描述基本思想的示例代码解决方案。
let fileManager = FileManager.default
let iCloudDocumentsURL = FileManager.default.url(forUbiquityContainerIdentifier: nil)?.appendingPathComponent("Documents", isDirectory: true)
let iCloudDocumentToCheckURL = iCloudDocumentsURL?.appendingPathComponent("whateverFileName", isDirectory: false)
guard let iCloudDocumentPath = iCloudDocumentsURL?.path else {
return
}
if fileManager.fileExists(atPath: iCloudDocumentPath) {
// Do something with the document
} else {
do {
try fileManager.startDownloadingUbiquitousItem(at: iCloudDocumentToCheckURL!)
// Will start downloading the file
} catch let error as NSError {
print("Unresolved error \(error), \(error.userInfo)")
}
}