我正在尝试使用CloudKit创建标记系统。
我有一个名为Article的类型和一个名为Tag的标签类型。
每篇文章可以应用多个标签。我希望对我的数据进行规范化处理,以使相同的标签可以出现在多篇文章上,并且文章可以具有多个标签,因此我需要一个多对多关系。
在老式的DB-stuff中,这将需要一个联结表。

您如何在CloudKit中做到这一点?

在任何Apple文档中,我只能找到一对多关系的示例。

因此,我创建了一个称为ArticleTag的联接表类型,该类型由两个CKReferences组成。一种用于“文章”引用,另一种用于“Tag”引用。

这应该可行,但是查询每篇文章标签的最佳方法是什么?

亲切的问候,
埃斯本

最佳答案

当前没有像传统的关系数据库那样在CloudKit中执行“联接”查询的任何机制,但是您应该能够通过在Articles中使用类型为“Reference List”的字段来完成所需的操作。让我们假设以下内容:

  • 您的“文章”记录类型具有“引用列表”类型的“标签”字段。您可以在CloudKit Dashboard中进行设置。
  • 您有一个标签记录类型
  • 在标记文章时,首先为每个标记查找(并可能创建)标记记录,然后使用每个标记记录ID向您的Article.tags列表字段添加CKReference。

  • 然后,您可以使用标签字段中的ID查找文章的标签,并可以通过使用标签记录ID和使用CONTAINS操作检查列表成员身份的CKQuery谓词来查找所有已标记了特定标签的文章。

    关于ios - 处理CloudKit中的多对多关系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31277454/

    10-12 14:38