CloudKit 服务器拒绝请求:未知字段记录名称

Posted

技术标签:

【中文标题】CloudKit 服务器拒绝请求:未知字段记录名称【英文标题】:CloudKit Server Rejected Request: Unknown field recordName 【发布时间】:2017-09-19 00:34:26 【问题描述】:

我在 Swift 4 中做这样的CKQuery

CKQuery(recordType: package.recordType, predicate: 
  NSPredicate(format: "NOT (recordName IN %@)", package.recordNames as CVarArg))

...我收到了这个CKError:

CKError(_nsError: CKError 0x60000024dce0: "服务器拒绝请求" (15/2000); 服务器消息 = "未知字段 'recordName'"; uuid = BCD7C8DA-04B0-4422-8A24-F6479D234706; 容器 ID = ".. .")

在查询recordName 时是否需要使用特殊键?

【问题讨论】:

【参考方案1】:

又挖了一些,发现不能直接通过recordName查询,但是可以通过recordID查询。因此,您必须构建一个 CKRecordIDs 数组并像这样进行查询,而不是比较字符串数组:

//- 1 - Build an array of CKRecordIDs
package.recordIDs = [CKRecordID(recordName: "..."), CKRecordID(recordName: "...")]

//- 2 - Set the predicate to use the `recordID` key
let pred = NSPredicate(format: "NOT (recordID IN %@)", package.recordIDs as CVarArg)

//- 3 - Set the query and drop your mic
CKQuery(recordType: package.recordType, predicate: pred)

我希望这对其他人有所帮助。

【讨论】:

以上是关于CloudKit 服务器拒绝请求:未知字段记录名称的主要内容,如果未能解决你的问题,请参考以下文章

Spring RestController:拒绝未知字段的请求

CloudKit 谓词:使用 CKQuery 的谓词搜索多个参考字段

未知参数用法 CloudKit - iOS 10

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

从 CloudKit 中的 CKRecord.Reference 获取价值

查询系统字段时出现CKError:拒绝“未知字段'createdAt'”