我想写一个CoreData
谓词来检查一列中有多少条记录与输入的任何关键字相匹配,而与它们出现的顺序无关。
例如。假设我有一条记录“这是我要比较的测试字符串”,现在如果我搜索“测试我的比较”,它应该返回该记录。
我尝试过使用单词分开,并对每个单词使用CONTAINS
并进行OR
ed,但是由于数据库中有15000多个记录,结果要花很多时间。
请帮助。
答案 0 :(得分:0)
Create为字符串中的每个单词包含predicate
,并使用AND类型的NSCompoundPredicate
。
let string = "test my compare"
var pridicateArray : [NSPredicate]!
for word in string.components(separatedBy: " ") {
let newPredicate = NSPredicate(format: "YOUR_ENTITY contains[c] %@", word)
pridicateArray.append(newPredicate)
}
let andPredicate = NSCompoundPredicate(type: NSCompoundPredicate.LogicalType.and, subpredicates: pridicateArray)