我正在尝试使用 CloudKit 创建一个标记系统。 我有一个名为 Article 的类型和一个名为 Tag 的标签类型。 每篇文章可以应用多个标签。我希望我的数据被规范化,因为相同的标签可以出现在多篇文章上,而文章可以有多个标签,我需要多对多的关系。 在老式的数据库中,这需要一个联结表。
你如何在 CloudKit 中做到这一点?
在任何 Apple 文档中,我只能找到一对多关系的示例。
所以我创建了一个名为 ArticleTag 的联结表类型,它由两个 CKReferences 组成。一份用于文章引用,一份用于标签引用。
这应该可行,但查询每篇文章标签的最佳方式是什么?
亲切的问候, 埃斯本
最佳答案
目前没有任何机制可以像传统关系数据库那样在 CloudKit 中执行“加入”查询,但是您应该能够通过在文章中使用类型为“引用列表”的字段来完成您想要的操作。让我们假设以下情况:
- 您的文章记录类型有一个类型为引用列表的“标签”字段。您可以在 CloudKit Dashboard 中进行设置.
- 你有一个标签记录类型
- 标记文章时,您首先要为每个标记查找(并可能创建)一个标记记录,然后使用每个标记记录 ID 将 CKReference 添加到您的 Article.tags 列表字段。
然后您可以使用标签字段中的 ID 查找文章的标签,您可以使用标签记录 ID 和 CKQuery 查找所有标记有特定标签的文章。使用 CONTAINS 操作检查列表成员资格的谓词。
关于ios - 在 CloudKit 中处理多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31277454/