CloudKit:CKQuery谓词RecordChangeTag的IN数组

时间:2016-03-08 22:29:16

标签: ios objective-c cloudkit

我试图使用谓词来执行CKQuery:

[NSPredicate predicateWithFormat@"recordChangeTag IN %@", @[record.recordChangeTag]]

描述如下:

recordChangeTag IN {"ijrz21fi"}

CKQueryOperation错误:

<CKError 0x7ff5cd3d2fc0: "Invalid Arguments" (12/1009); "Field '___etag' has a value type of NUMBER_INT64 and cannot be queried using filter value type STRING_LIST">

任何人都有删除引号的解决方法,以便在发送到服务器时不会转换为STRING_LIST?或者任何其他想法让它发挥作用?

1 个答案:

答案 0 :(得分:-1)

record.recordChangeTag是一个字符串。因此,NSPredicate将假设您正在查询字符串并将在值周围加上引号。您应该先将其转换为数字。除此之外,我不认为该字段是一个列表,因此您可以使用=而不是IN。

如果您使用Swift,您的代码将如下所示: NSPredicate(格式:&#34; recordChangeTag =%@&#34;,Int64(record.recordChangeTag!)!)

但是......你为什么要查询recordChangeTag?这甚至可能吗?如果是这样,那么只有在获得changeTag后记录没有改变时才会得到结果。你不能只查询recordID并测试changeTag是否没有改变?