我试图使用谓词来执行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?或者任何其他想法让它发挥作用?
答案 0 :(得分:-1)
record.recordChangeTag
是一个字符串。因此,NSPredicate将假设您正在查询字符串并将在值周围加上引号。您应该先将其转换为数字。除此之外,我不认为该字段是一个列表,因此您可以使用=而不是IN。
如果您使用Swift,您的代码将如下所示: NSPredicate(格式:&#34; recordChangeTag =%@&#34;,Int64(record.recordChangeTag!)!)
但是......你为什么要查询recordChangeTag?这甚至可能吗?如果是这样,那么只有在获得changeTag后记录没有改变时才会得到结果。你不能只查询recordID并测试changeTag是否没有改变?