【问题标题】:Handling CKErrors while using NSPersistentCloudKitContainer使用 NSPersistentCloudKitContainer 时处理 CKErrors
【发布时间】:2021-10-28 07:56:57
【问题描述】:

我有一个使用 Core Data 的应用程序,效果很好。我决定尝试使用 iCloud 在多个设备之间同步数据。我遵循了将 NSPersistentContainer 更改为 NSPersistenCloudKitContainer 并添加 iCloud 功能、启用 CloudKit 和后台模式(远程通知)的基本步骤。通过这些很少的更改,数据在设备之间进行了应有的同步。看起来很简单。

但是,如果用户的 iCloud 存储空间已满,应用程序会继续运行并在本地持续存在,但同步会停止(显然)而不通知用户。

我知道这是一个 quotaExceeded 错误,但我将如何访问该错误然后处理它(以及一般处理 CKErrors)?

我觉得这个 NSPersistentCloudKitContainer 就像一堵墙,我无法通过它来处理 CKErrors。我是初学者,所以也许我遗漏了一些明显的东西,但在网上找不到任何答案。

坚持quotaExceeded错误情况:

  • 第 1 步 - 发生 CKError.Code.quotaExceeded。
  • 第 2 步 - ???
  • 第 3 步 - 通知用户他们的 iCloud 存储空间已满。

第 2 步是什么样的?

【问题讨论】:

    标签: swift core-data cloudkit nspersistentcloudkitcontainer ckerror


    【解决方案1】:

    第 2 步 - 监控 NSPersistentCloudKitContainer.Event 以了解事件类型和更改。

    在这个问题的 ggruen 的回答(在他们的杂项部分)中找到了一个解决方案: NSPersistentCloudKitContainer: How to check if data is synced to CloudKit

    从那里我能够使用该答案中的示例代码处理 CKErrors。

    【讨论】:

    • 请添加更多详细信息以扩展您的答案,例如工作代码或文档引用。
    • @Crew3339 你能解决这个问题吗?我在这里发布了一个类似的问题:stackoverflow.com/questions/70384869/…,因为我想通知用户 CKError.Code.quotaExceeded 但我无法访问错误的详细信息。谢谢。
    • @alpennec,我检查了你的问题,我的情况是一样的。 CKErrors 可以从这里处理,但 partialErrorsByItemID 和 errorUserInfo 不返回任何数据。在联系 Apple 开发者技术支持后,他们确定空返回是 Core Data 错误。
    猜你喜欢
    • 1970-01-01
    • 2020-05-10
    • 1970-01-01
    • 2019-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-07
    • 1970-01-01
    相关资源
    最近更新 更多