【问题标题】:Coredata predicate for matching strings in columns with multiple words in any order of occurrence用于以任何出现顺序匹配具有多个单词的列中的字符串的 Coredata 谓词
【发布时间】:2019-01-23 09:46:33
【问题描述】:

我想编写一个CoreData 谓词来检查一列中有多少记录与输入的任何关键字匹配,无论它们出现的顺序如何。


例如。假设我有一条“这是我要比较的测试字符串”的记录,现在如果我用“测试我的比较”进行搜索,它应该会返回这条记录。

我尝试使用分隔单词并为每个单词使用 CONTAINSORed ,但由于 db 中有超过 15000 条记录,因此需要很长时间才能得出结果。

请帮忙。

【问题讨论】:

  • 带有 CONTAINS 的谓词?
  • 您目前使用什么谓词?获取正确的语法以及让 fetch 有效运行的问题是什么?

标签: ios swift core-data nspredicate


【解决方案1】:

为字符串中的每个单词创建包含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)

【讨论】:

    猜你喜欢
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    • 2012-10-10
    • 1970-01-01
    • 2016-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多