处理CloudKit中的多对多关系

esb*_*enr 5 many-to-many ios cloudkit

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

你是如何在CloudKit中做到的?

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

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

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

亲切的问候,埃斯本

Dav*_*ing 5

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

  1. 您的文章记录类型具有参考列表类型的"标签"字段.您可以在CloudKit仪表板中进行设置.
  2. 您有一个Tag记录类型
  3. 标记文章时,首先查找(并可能创建)每个标记的标记记录,然后使用每个标记记录ID将CKReference添加到Article.tags列表字段.

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

  • 这正是我经过一番思考后最终做的事情.Apples文档中的参考列表并不清楚.我仍然对CloudKit工作得有多糟糕感到震惊.调制缓慢而繁琐.您认为数据库已足以让Apple了解需要更高级的存储系统. (2认同)