我正在开发使用iCloud备份和还原应用程序数据的应用程序。为此,我正在使用以下代码访问iCloud以在其中写入数据。
if let iCloudDocumentsURL = FileManager.default.url(forUbiquityContainerIdentifier: nil) {
var iCloudDocumentsURL = iCloudDocumentsURL
do {
iCloudDocumentsURL = iCloudDocumentsURL.appendingPathComponent("Documents")
try FileManager.default.createDirectory(at: iCloudDocumentsURL, withIntermediateDirectories: true, attributes: nil)
}
catch {
completion(false, error.localizedDescription)
}
let fileURL = iCloudDocumentsURL.appendingPathComponent(file)
//writing
do {
try text.write(to: fileURL, atomically: false, encoding: .utf8)
completion(true, nil)
}
catch {
completion(false, error.localizedDescription)
}
}
else {
completion(false, "iCloud is not accessible")
}
但是如果用户未登录iCloud,那么它也会给我“无法访问iCloud”,或者如果用户登录iCloud但禁用了我的应用程序的iCloud访问权限,那么我也会收到相同的消息。
所以,无论如何,我如何才能以类似的状态检测类似的错误。原因我想向用户提供适当的消息,以便他可以使用我的应用程序的某些功能。我也想知道如何检测用户的iCloud存储是否已满,并且正在尝试写入iCloud存储。如何检测iCloud的可用空间?
[指定了许多不同的iCloud错误代码in the Apple Developer Documentation。
您最感兴趣的是NSUbiquitousFileNotUploadedDueToQuotaError
:
NSUbiquitousFileNotUploadedDueToQuotaError该项目无法上传到iCloud,因为它将使帐户超过其配额。