在 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 并重新构建它。
我正在尝试让我的 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 并重新构建它。