CloudKit|解决 Field 'recordName' is not marked queryable 错误

了解如何修复在 CloudKit 中 Query 时出现的 Field 'recordName' is not marked queryable 错误。

CloudKit|解决 Field 'recordName' is not marked queryable 错误

默认不可查询

默认情况下,出于资源消耗的考虑,CloudKit Database 中所有字段均不可查询(因为需要预先建立索引)。

无论是在 CloudKit Console 网页端,还是在 Xcode 中通过编程的方法查询数据,都会出现 Field 'recordName' is not marked queryable 报错:

开发者需要明确指定需要查询的字段,然后才能进行 Query。

设置索引

在 CloudKit Console 网页端,找到 Schema -> Record Types。

选择需要查询的表,然后点击 Edit Indexes:

点击右上角的+,Add Index:

按照如下方式填写:

  • Record Type:选择需要查询的表
  • Name:任何名字都可以,主要用于自己看。例如recordName(queryable)
  • Type:选择 QUERYABLE
  • Field:选择 recordName

点击 Add 保存。

这就是我们新添加的 Index 记录,不清楚为什么名称和我们指定的不一致。

测试 Queryable 生效

在 Data -> Records 中进行查询时,必须选择 Private Database 和正确的 Zone:

现在点击 Query Records,可以正确查询到数据。在 Xcode 中通过编程的方式也可以正常查询。