我正在嘗試創建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