使用 iCloud Drive 存储文件
发布
更新
字数
475
阅读
3 分钟
阅读量
2074
iCloud 是 iOS 生态中很重要的一部分,从开放至今已经发展的非常完善。针对不同场景分为三部分:
- Key-value storage 通常可用于存储、同步应用的配置信息
- iCloud Documents 即 iCloud Drive。如其名,用于存储文件内容,如文本、图片、音频、视频等,在 iOS 中可用使用内置「文件」应用直接访问,在 macOS 中也可以直接在 Finder 中访问
- CloudKit 用于结构化数据存储,如可同步的 Core Data
本文主要介绍 iCloud Drive 存储文件。
开启 iCloud 及 iCloud Documents 服务
在 Xcode 中:
- 选中 target
- 打开 Signing & Capabilities 选项卡
- 点击左上角
+ Capability
,找到 iCloud,添加,选中iCloud Documents
service
编辑 info.plist
文件
为了让 iCloud drive 知道我们要把文件存储在哪个路径下,我们需要进行一些简单的配置:右键项目的 Info
文件,Open As > Source Code
,然后加入一项新的配置:
<key>NSUbiquitousContainers</key>
<dict>
<key>YOUR_ICLOUD_CONTAINER_NAME</key>
<dict>
<key>NSUbiquitousContainerIsDocumentScopePublic</key>
<true/>
<key>NSUbiquitousContainerSupportedFolderLevels</key>
<string>Any</string>
<key>NSUbiquitousContainerName</key>
<string>FOLDER_NAME</string>
</dict>
</dict>
注意修改 YOUR_ICLOUD_CONTAINER_NAME
(iCloud.
开头的)和 FOLDER_NAME
(通常使用应用名)
使用 iCloud Drive
要在 iCloud Drive 中读写文件,首先使用 FileManager
实例方法 func url(forUbiquityContainerIdentifier containerIdentifier: String?) -> URL?
获取应用的 iCloud Drive 根目录,文档:https://developer.apple.com/documentation/foundation/filemanager/1411653-url
该方法同样用于判断 iCloud Drive 是否可用,另注意不要在主线程调用,否则可能阻塞 UI 进程。
为了使我们的文件在文件系统中可见,需要使用 Documents
路径:
let documentsPath = FileManager.default.url(forUbiquityContainerIdentifier: nil)?.appendingPathComponent("Documents", conformingTo: .directory)
至少写入一个文件后就可以在 iOS 内置的「文件」应用中查看了:
let filePath = documentsPath.appendingPathComponent("hello.txt", conformingTo: .text)
try? "Hello iCloud Drive".data(using: .utf8)?.write(to: filePath)