清除/清除 CloudKit 容器的所有用户 iCloud 记录

Posted

技术标签:

【中文标题】清除/清除 CloudKit 容器的所有用户 iCloud 记录【英文标题】:Purge/Clean all user iCloud records for CloudKit container 【发布时间】:2018-07-08 11:10:53 【问题描述】:

我们创建了一个 ios 应用程序,它保存到 CoreData,然后同步到 CloudKit。在测试中,我们还没有找到从应用程序 iCloud 容器中清除数据的方法(用于用户私人数据)。只能从我们知道的那里删除。如果我们遇到同步问题并且某些东西“卡在 iCloud 中”,我们不确定如何清除以重新启动。关于如何彻底清理 iCloud 的任何想法。 更新信息:CloudKit 私有数据库。没有区域。清除应用程序的所有数据以获得全新的开始。应用程序的用户将拥有此控制权。 预期结果:从应用程序中,用户可以快速删除他们保存的所有用户数据。 我可能没有问正确的问题或遗漏了什么 - 感谢任何指导。

【问题讨论】:

您没有提供任何有用的详细信息。您如何使用 CloudKit?你在使用公共数据库吗?私有数据库?共享数据库?除了默认区域之外,您还使用任何区域吗?您希望如何删除?您是否希望单个用户能够从自己的数据库中删除自己的数据?您希望能够快速删除所有用户数据吗? Edit您的问题(不要在评论中回复),详细说明您拥有哪些数据以及需要删除哪些数据。 感谢您提供更好、更有用信息的指导。我已经编辑了以上信息。 【参考方案1】:

如果您使用“无区域”的私有数据库,那么您实际上是在使用默认区域。为了从默认区域中删除所有数据,您需要查询每种记录类型的每个记录 id 并删除每个结果。这是非常低效的。

我建议您不要在用户的私有数据库中使用默认区域,而是在用户的私有数据库中创建并使用自定义区域。然后,如果您需要删除用户的所有数据,只需删除该区域。一键调用,简单高效。

【讨论】:

谢谢 RMaddy,这很有用,帮助我们找到了删除区域的答案 - 从当前数据库中以低优先级异步删除一个记录区域(及其内容)。 developer.apple.com/documentation/cloudkit/ckdatabase/… 我正在按照您的建议检查this,但我既没有收到任何错误消息,也没有收到任何成功消息,而且当获取数据时,所有数据都来自相同的。

以上是关于清除/清除 CloudKit 容器的所有用户 iCloud 记录的主要内容,如果未能解决你的问题,请参考以下文章

docker如何清除所有运行过的容器

有没有办法使用 Azure 门户从 CosmosDB 容器中清除所有文档?

sh 清除所有Docker容器和/或图像

清除 Docker mongodb 中的所有条目?

从 UIImage 清除 UIView 绘图

CloudKit 获取所有用户记录