swift - 我可以编写 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看到它是写的。但是,我看不到文件应用程序中的文档或通过应用程序提取文档。只有设备上的文档。
在这一点上,我不确定我错过了什么。我也不知道如何调试它。
解决方案
将它们保存Documents
在云容器中的文件夹中。无需添加.appendingPathComponent("myAppName")
推荐阅读
- amazon-web-services - 具有完全 S3 访问权限的 IAM 用户无法下载文件
- c# - Entity Framework Core SQL raw 中已经添加了具有相同键的项
- javascript - 如何在 Chartjs 的圆环图之外显示标签?
- laravel - 使用 Laravel 在数据库中保存带有嵌套数组的数组
- google-apps-script - 从谷歌表中的列表中分配唯一序列
- php - 如何使用php在foreach循环上放置多个条件
- deployment - 使用八达通部署时是否可以保留网站绑定?
- html -
Firefox 和 Chrome 的渲染差异
- excel - 运行 VBA 宏后无法保存
- c# - 分配属性时如何防止获取访问器调用设置访问器