我正在尝试创建CloudKit文本搜索查询。 什么工作是记录的查询,像这样的搜索文本开头:如何执行包含令牌搜索的CloudKit全文搜索
NSPredicate(format: "Text BEGINSWITH %@", searchText)!
令牌搜索中也可以(见询问如果输入一个关键词是某处记录)所示:
NSPredicate(format: "allTokens TOKENMATCHES[cdl] %@", searchText)!
你可以看到这些查询演示程序关闭EVCloudKitDao工作(见截图)
但现在,我想这两个查询,这样的结果感到有点更完整的结合起来。我尝试使用此查询:
NSPredicate(format: "Text BEGINSWITH %@ OR allTokens TOKENMATCHES[cdl] %@", searchText, searchText)!
但我会得到这个CloudKit错误:
Terminating app due to uncaught exception 'CKException', reason: 'Unexpected expression: Text BEGINSWITH "Y" OR allTokens TOKENMATCHES[cdl] "Y"'
除此之外,我还尝试了NSCompoundPredicate这样的:
var p1 = NSPredicate(format: "allTokens TOKENMATCHES[cdl] %@", searchText)!
var p2 = NSPredicate(format: "Text BEGINSWITH %@", searchText)!
var p = NSCompoundPredicate(type: NSCompoundPredicateType.OrPredicateType, subpredicates: [p1, p2])
但是,一个给大约相同的错误:
Terminating app due to uncaught exception 'CKException', reason: 'Unexpected expression: allTokens TOKENMATCHES[cdl] "y" OR Text BEGINSWITH "y"'
奇怪的是,它使用AndPredicateType而不是OrPredicateType时可以工作
有谁知道这种查询的备用解决方案吗? 由于它是用于自动完成功能的,因此执行2个查询并将结果组合起来并不是真正的选择。
您是否尝试过使用NSCompoundPredicate? – 2015-04-07 15:52:54
感谢您的提示。不幸的是它有相同的结果。它看起来像在谓词中使用OR有问题。 – 2015-04-07 19:10:49