首页 > 解决方案 > 我可以编写 iCloud 文档,但看不到它们

问题描述

我正在使用 UIDocuments 和 iCloud。我成功地将文件写入 iCloud,但在设备和文件应用程序中看不到。

我在 info.plist 中有以下内容。

<key>NSUbiquitousContainers</key>
<dict>
    <key>iCloud.myAppName</key>
    <dict>
        <key>NSUbiquitousContainerIsDocumentScopePublic</key>
        <true/>
        <key>NSUbiquitousContainerName</key>
        <string>myAppName</string>
        <key>NSUbiquitousContainerSupportedFolderLevels</key>
        <string>Any</string>
    </dict>
</dict>

在我的代码中,我可以创建目录,然后编写文件。

   var containerUrl: URL? {
                    return FileManager.default.url(forUbiquityContainerIdentifier: nil)?.appendingPathComponent("myAppName")
                }          
  let url =  containerUrl?.appendingPathComponent("fileName.fileType")           

     print("url: \(url)")

打印返回:

file:///private/var/mobile/Library/Mobile%20Documents/iCloud~myAppName/myAppName/fileName.fileType

我可以测试并看到文件是用以下代码写出的:

let boolTest: Bool = !FileManager.default.fileExists(atPath: testUrl!.path, isDirectory: nil)
print("!file exist: \(boolTest)")

在 iCloud 下我的 Target 的“Signing & Capabilities”选项卡中,我单击了“iCloud Documents”并有一个名为 iCloud.myAppName 的容器分配给我的团队。(注意:还有另外两个检查“Key-value storage”和“CloudKit”。这两种方式我都试过了。我相信它们应该不被选中。)

无论如何,一切似乎都运作良好。我可以通过fileExist看到它是写的。但是,我看不到文件应用程序中的文档或通过应用程序提取文档。只有设备上的文档。

在这一点上,我不确定我错过了什么。我也不知道如何调试它。

标签: swifticlouduidocument

解决方案


将它们保存Documents在云容器中的文件夹中。无需添加.appendingPathComponent("myAppName")


推荐阅读