【问题标题】:How do I query for nil values with CloudKit.js?如何使用 CloudKit.js 查询 nil 值?
【发布时间】:2015-12-17 11:20:32
【问题描述】:

使用 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: "" }
}]

【问题讨论】:

    标签: cloudkit cloudkit-web-services


    【解决方案1】:

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

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

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

    CloudKit CKQuery documentation 中没有提到零字段。

    documentation for NSPredicates 中有用于 nil 值的样本。

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

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

    【讨论】:

    • 你可能是对的。我将此提交给 DTS,并且将接受您的答案或提交他们的替代方案。谢谢。
    • 收到 DTS 的回复,您确实是正确的。我想是时候提交增强雷达了。
    猜你喜欢
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-14
    • 2022-01-04
    • 1970-01-01
    相关资源
    最近更新 更多