2015-09-20 20 views
1

使用CloudKit.js,我该如何构建一个匹配字段为零的项目的查询?我尝试过的每个置换都失败了 - 要么是它明确地匹配字符串值(即“null”或“nil”),要么我会尝试传递'null'会引发错误。如何使用CloudKit.js查询零值?

任何想法?以下都不是。

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

回答

5

我不认为有任何选项来查询CloudKit中的零值。也不是来自本地代码。我已经尝试了很多谓词,但非似乎工作。

您必须意识到,CloudKit是一个键值存储。当一个值为零时,那么关键字不会出现在记录中。没有选项来查询不存在的密钥。

我得出了一个很好的解决方案最接近的是与格式"NOT myField => ''"谓语对不起,不知道的.js

CloudKit CKQuery documentation有提及零领域没有什么格式。

documentation for NSPredicates有样本的零值。

但它已经很清楚,CloudKit已实施只有NSPredicate的可能性的一个子集(见CKQuery类的引用)

我觉得处理这是通过不使用/依赖于零值的最佳方式。如果您确实需要检查一些零状态,则可以添加一个表示该状态的额外字段。

+0

你可能是对的。我将此提交给DTS,并将接受您的答案或提交他们的替代结果。谢谢。 – Hunter

+1

听到DTS回来,你确实是对的。我想现在是时候提交一份增强雷达。 – Hunter