Использование CONTAINS замедляет его.Что вам нужно сделать, это создать новую таблицу под названием searchWords (или как угодно), в которой хранятся все слова в ваших заголовках, выполненные строчными буквами и с удаленными акцентами.У них есть связь, связывающая их с исходными объектами.Убедитесь, что поле слова проиндексировано.
Выполните запрос по этой таблице, но вместо использования CONTAINS или BEGINSWITH сделайте что-то вроде
word> "term" AND word <"tern" </p>
Обратите внимание, что первая строка содержит поисковый термин, а вторая - поисковый термин с увеличенным последним символом.Это позволяет Core Data использовать индекс SQL для выполнения поиска.
Apple имеет сеанс Core Data WWDC, который объясняет это, включая пример кода.Пример кода содержит класс, который обрабатывает нормализацию строки (т. Е. Удаление регистра) и приращение последнего символа слова с учетом юникода.