ios - 使用CloudKit共享时如何正确使用数据库订阅

标签 ios synchronization cloudkit cksubscription

我正在研究如何处理 CloudKit 共享和数据库订阅,并且我需要帮助了解 Apple 设想我们如何根据我们可用的属性和委托(delegate)方法一起使用订阅和 CloudKit 共享。

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

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

从概念上讲,我的想法是倒退的,并假设每个用户都对自己的潜艇负责。使用新的记录类型可以翻转这种情况,因此共享所有者对所有订阅者负责。

这真的是这样做的方法吗?任何使用共享的人都会遇到这个问题,所以我认为应该有某种方法来处理它而不创建另一个记录类型?

最佳答案

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

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

关于ios - 使用CloudKit共享时如何正确使用数据库订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55972262/

相关文章:

ios - Flutter-Codemagic-IOS构建失败

ios - 如何检查我的 AFNetworking 库使用的是哪个版本的 TLS?

ios - iPhone 上的应用程序测试,崩溃日志在哪里?

java - 多线程在等待时做某事

ios - CloudKit:区域已被用户清除

ios - AVPlayer 不从子域的 url 加载视频

java - 如何避免多线程程序中不必要的阻塞?

c# - 具有变体的生产者-消费者 - 如何与线程信号/等待同步?

ios - CKShare "Server record changed"错误

ios - CloudKit:备份所有服务器数据?有什么解决办法吗?