查询具有多种记录类型的 CloudKit 数据库

Posted

技术标签:

【中文标题】查询具有多种记录类型的 CloudKit 数据库【英文标题】:Query CloudKit database with multiple record types 【发布时间】:2015-02-15 23:41:39 【问题描述】:

我设置了一个云工具包数据库,并尝试对其进行查询。看起来谓词不适用于我正在尝试做的事情。

在 SQL 中,查询看起来像这样:

选择类型 1 从表 1、表 2 WHERE table1.columnA = table2.columnB

还有,类似于:

NSPredicate(format: "%K == %K" "key1", "key2") but that doesn't work either.

再次,因为我正在尝试匹配关键值,我认为谓词不会起作用。有人有解决办法吗?

【问题讨论】:

【参考方案1】:

您不能在 CloudKit 中使用一个查询来查询多个记录类型。您需要先查询 1 个记录类型,然后使用该结果查询第二个记录类型。您建议的谓词仅在两个字段位于同一记录类型中时才有效

【讨论】:

似乎缺少一个基本的数据库功能。我最终将要查询的信息作为变量传递,然后适当地编写谓词。 这在 nosql 数据库中很常见。简洁的解释见en.wikipedia.org/wiki/NoSQL 啊。我在用关系数据库术语来考虑它。谢谢(你的)信息。在我前进的过程中有所作为。 当心 WWDC 2015 他们特别提到不要在查询中嵌套查询。所以不要为此使用便捷 API。【参考方案2】:

您应该查看 Apple 的 CloudCaptions 示例代码。它们为每个 CKRecord 类型创建包装器,并提供方便的方法来加载关系。

希望 Apple 今年能增加更好的搜索功能!

【讨论】:

以上是关于查询具有多种记录类型的 CloudKit 数据库的主要内容,如果未能解决你的问题,请参考以下文章

查询 CloudKit 用户记录给出“无法查询系统类型”

如何从 CloudKit 查询和获取数据?

Cloudkit 返回具有特定字符串的记录

具有多种记录类型的 Swift CKQuery

在 CloudKit 中使用比较谓词进行查询

CloudKit 服务器到服务器身份验证 + 安全角色