处理CloudKit中的多对多关系

时间:2015-07-07 19:18:14

标签: ios many-to-many cloudkit

我正在尝试使用CloudKit创建标记系统。 我有一个名为Article的类型和一个名为Tag的标签类型。 每篇文章都可以应用多个标签。我希望我的数据能够正常化,因为相同的标签可以出现在几篇文章中,文章可以有多个标签,我需要一个多对多的关系。 在旧式的DB-stuff中,这需要一个联结表。

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

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

所以我创建了一个名为ArticleTag的联结表类型,它包含两个CKReferences。一个用于文章参考,一个用于标记参考。

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

亲切的问候, Esben

1 个答案:

答案 0 :(得分:5)

目前没有任何机制可以像传统的关系数据库那样在CloudKit中“加入”查询,但是您应该能够通过在文章中使用“参考列表”类型的字段来完成您想要的任务。我们假设如下:

  1. 您的文章记录类型具有参考列表类型的“标签”字段。您可以在CloudKit Dashboard
  2. 中进行设置
  3. 您有一个标记记录类型
  4. 在标记文章时,首先查找(并可能创建)每个标记的标记记录,然后使用每个标记记录ID将CKReference添加到Article.tags列表字段。
  5. 然后,您可以使用标记字段中的ID查找文章的标记,并且您可以使用标记记录ID和使用CONTAINS操作检查的CKQuery谓词来查找标记有特定标记的所有文章列表会员资格。