在 Swift 中通过 iCloud 同步文件

Syncing a File Through iCloud in Swift

我正在尝试让我的 iOS 应用程序能够通过 iCloud 同步用户数据。我认为要走的路是使用 iCloud 文档,因为我已经在本地 save/load 一个 json 文件来存储他们的数据。但是,我无法让它正常工作。我尝试了很多在线教程,其中 none 有效。此外,我无法让用户在他们的文档中看到该文件。 我的最新代码基于 this 教程。这是我当前的代码,在我的 viewDidLoad:

    // check for container existence
    if let url = self.containerUrl, !FileManager.default.fileExists(atPath: url.path, isDirectory: nil) {
        print("does not exist")
        do {
            try FileManager.default.createDirectory(at: url, withIntermediateDirectories: true, attributes: nil)
        }
        catch {
            print(error.localizedDescription)
        }
    }
    
    let documentUrl = self.containerUrl!.appendingPathComponent("test.txt")
    print("url: \(documentUrl)")
    
    let string = "Hello World!"
    
    do {
        //try string.write(to: documentUrl, atomically: true, encoding: .utf8)
        print("saved")
        try print("Data: \(String(contentsOf: documentUrl))")
    }
    catch {
        print(error.localizedDescription)
    }

我切换取消注释保存和加载行以在不同设备上进行测试。

这是我添加到 info.plist 中的内容:

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

这是我的能力部分:

到目前为止,我可以在一台设备上正常读写文件,但在另一台也使用我的 iCloud 帐户登录的设备上,我收到找不到文件的错误消息:

The file “test.txt” couldn’t be opened because there is no such file.

我可以在两台设备上看到 iCloud Drive 中的文件(我不想要),但我只能在保存它的设备上阅读它。

任何有关此主题的帮助或工作教程将不胜感激。

退出并 re-open Xcode 并重新构建它。