Я читал документы по основным данным, чтобы ускорить мой поиск. Я нашел следующее и был немного смущен тем, что это значит:
Хранилище SQL, с другой стороны,
компилирует предикат и сортирует
дескрипторы к SQL и оценивает
результат в самой базе данных. Это
сделано в первую очередь для
производительность - базы данных намного быстрее
в этом (это то, что они предназначены
для) - но это означает, что оценка
происходит в среде без какао,
и так сортировать дескрипторы (или
предикаты), которые полагаются на какао не может
Работа. Поддерживаемые селекторы сортировки
сравнить: и caseInsensitiveCompare :.
Обратите внимание, что в дополнение вы не можете сортировать
на переходные свойства с использованием
Магазин SQLite.
документация здесь
Значит ли это, что они рекомендуют не использовать предикаты или дескрипторы сортировки при извлечении управляемых объектов из хранилища sqlite?
В настоящее время у меня есть запрос FetchRequest, где я передаю следующее:
NSPredicate *thingSearchPredicate =
[NSPredicate predicateWithFormat:@"label BEGINSWITH[cd] %@", searchText];
NSSortDescriptor *sortDescriptor =
[[NSSortDescriptor alloc] initWithKey:@"label" ascending:YES];
Поиск работает, но я думаю, что использую предикат, основанный на какао. НАЧИНАЕТСЯ с того, что я предполагаю сравнение: параметры: диапазон: сокращение, где диапазон - длина строки поиска. Тот факт, что он является нечувствительным к диакритическим знакам, определенно противоречит приведенному выше совету. Значит ли это, что они автоматически оцениваются для меня после того, как все экземпляры этого объекта были извлечены?
Есть ли другие способы ускорить поиск?