1

使用 CloudKit.js,我如何构造一个与字段为 nil 的项目匹配的查询?我尝试过的每个排列都失败了——要么它明显匹配一个字符串值(即“null”或“nil”),要么如果我实际上尝试传递“null”,它会抛出一个错误。

有任何想法吗?以下都不起作用。

filterBy: [{
        fieldName: 'customerNumber',
        comparator: 'EQUALS',
        fieldValue: { value: "nil" }
}]

filterBy: [{
        fieldName: 'customerNumber',
        comparator: 'EQUALS',
        fieldValue: { value: null }
}]

filterBy: [{
        fieldName: 'customerNumber',
        comparator: 'EQUALS',
        fieldValue: { value: "null" }
}]

filterBy: [{
        fieldName: 'customerNumber',
        comparator: 'EQUALS',
        fieldValue: { value: "" }
}]
4

1 回答 1

8

我认为没有任何选项可以在 CloudKit 中查询 nil 值。也不是来自本机代码。我尝试了很多谓词,但似乎没有。

您必须知道 CloudKit 是一个键值存储。当一个值为 nil 时,键将不会出现在记录中。没有查询不存在的键的选项。

我最接近一个好的解决方案是使用格式"NOT myField => ''"为抱歉的谓词,不知道 .js 的格式

CloudKit CKQuery 文档中,没有提到 nil 字段。

NSPredicates 的文档中, 有用于 nil 值的示例。

但很明显,CloudKit 只实现了 NSPredicate 的一部分可能性(参见 CKQuery 类参考)

我认为处理这个问题的最好方法是不使用/依赖于 nil 值。如果您确实需要检查一些 nil 状态,那么您可以添加一个表示该状态的额外字段。

于 2015-09-23T05:50:30.573 回答