ios - 在 CloudKit 中处理多对多关系

标签 ios many-to-many cloudkit

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

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

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

所以我创建了一个名为 ArticleTag 的联结表类型,它由两个 CKReferences 组成。一份用于文章引用,一份用于标签引用。

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

亲切的问候, 埃斯本

最佳答案

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

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

然后您可以使用标签字段中的 ID 查找文章的标签,您可以使用标签记录 ID 和 CKQuery 查找所有标记有特定标签的文章。使用 CONTAINS 操作检查列表成员资格的谓词。

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

相关文章:

grails - 我可以从关联(joinTable)中恢复引用丢失的数据吗

ios - 如何远程加载数据到Cloudkit

ios - 在 Swift 中将 CLLocationCoordinate2D 转换为 CLLocation 时出错

ios - 在 AppDelegate 中运行 CKQuery - 等待完成

ios - 一次性将所有 Realm 对象转换为字典

ios - 在核心数据中实体更新(保存时)时获得通知的最佳方式是什么?

ios - 可变字符串颜色变化改变字符以显示为正方形

ios - 为什么我可以直接在我的设备上安装应用程序商店分发版本?

MySQL 与 FIFO 的限制关系表

sql - golang gorm 多对多反向引用