Предикат Coredata для сопоставления строк в столбцах с несколькими словами в любом порядке вхождения - PullRequest
0 голосов
/ 23 января 2019

Я хочу написать предикат CoreData, чтобы проверить, сколько записей из столбца соответствует любому из введенных ключевых слов независимо от порядка их появления.


Ex. Предположим, у меня есть запись с «Это моя тестовая строка для сравнения», теперь, если я ищу с «проверить мое сравнение», она должна вернуть эту запись.

Я пытался использовать разделение слов и использовать CONTAINS для каждого слова и OR ed, но результат длится вечно, поскольку в дБ содержится более 15000 записей.

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 23 января 2019

Создать содержит predicate для каждого слова в строке и использовать NSCompoundPredicate типа AND.

 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)
...