使用CloudKit分享时如何正确使用数据库订阅

How to use database subscriptions correctly when using CloudKit sharing

我正在研究如何处理 CloudKit 共享和数据库订阅,我需要帮助了解 Apple 设想我们如何使用订阅和 CloudKit 共享给定我们可用的属性和委托方法.

非常相似,但没有将共享带入等式,并且在功能方面与我设置的有点不同。

设置潜艇是最简单的部分。如果没有订阅,请设置一个。如果所有者停止共享,则会调用一个委托方法,这样您就可以删除除您自己的订阅之外的所有订阅。当参与者离开共享时,我的问题就来了。与该人关联的订阅应该被删除,但他们现在无权访问共享数据库来执行此操作。而且我看不出有什么办法可以将订阅与参与者 ID 相关联。我能弄清楚如何做到这一点的唯一方法基本上就是其他线程中提到的方法。创建一个新的订阅记录类型,将参与者 ID 索引到订阅 ID。

从概念上讲,我有这个倒退,并假设每个用户都会对自己的订阅者负责。使用新的 recordType 翻转,因此共享所有者对所有订阅者负责。

真的是这样吗?使用共享的任何人都会遇到这个问题,所以我认为应该有某种方法可以在不创建另一个 recordType 的情况下处理它?

我误解了一些非常基本和重要的东西。出于某种原因,我认为共享数据库的 subs 实际上存在于所有者数据库中,当共享停止时,他们将失去对数据库的访问权限,并且无法删除自己的 sub。事实并非如此(显然?),因为您只能看到自己的订阅者,而所有者看不到参与者的任何订阅者。

当共享停止时,您将失去对 CKShare 记录的访问权限,但您仍然可以访问共享数据库上的子项。所以在需要时删除它是微不足道的 - 如果所有者负责它会更多地参与(正如我上面的想法)。