Хранить конкретные взаимодействия с основными данными - PullRequest
0 голосов
/ 05 августа 2009

Я читал документы по основным данным, чтобы ускорить мой поиск. Я нашел следующее и был немного смущен тем, что это значит:

Хранилище SQL, с другой стороны, компилирует предикат и сортирует дескрипторы к SQL и оценивает результат в самой базе данных. Это сделано в первую очередь для производительность - базы данных намного быстрее в этом (это то, что они предназначены для) - но это означает, что оценка происходит в среде без какао, и так сортировать дескрипторы (или предикаты), которые полагаются на какао не может Работа. Поддерживаемые селекторы сортировки сравнить: и caseInsensitiveCompare :. Обратите внимание, что в дополнение вы не можете сортировать на переходные свойства с использованием Магазин SQLite.

документация здесь

Значит ли это, что они рекомендуют не использовать предикаты или дескрипторы сортировки при извлечении управляемых объектов из хранилища sqlite?

В настоящее время у меня есть запрос FetchRequest, где я передаю следующее:

    NSPredicate *thingSearchPredicate = 
[NSPredicate predicateWithFormat:@"label BEGINSWITH[cd] %@", searchText];
    NSSortDescriptor *sortDescriptor = 
[[NSSortDescriptor alloc] initWithKey:@"label" ascending:YES];

Поиск работает, но я думаю, что использую предикат, основанный на какао. НАЧИНАЕТСЯ с того, что я предполагаю сравнение: параметры: диапазон: сокращение, где диапазон - длина строки поиска. Тот факт, что он является нечувствительным к диакритическим знакам, определенно противоречит приведенному выше совету. Значит ли это, что они автоматически оцениваются для меня после того, как все экземпляры этого объекта были извлечены?

Есть ли другие способы ускорить поиск?

1 Ответ

0 голосов
/ 07 августа 2009

Вы увидите ошибку, если основные данные не могут выразить ваш запрос в SQL. В документации указано, что выражения взяты, преобразованы в SQL и переданы в sqllite по соображениям производительности. Не то чтобы он выродился в какао, если его нельзя выразить в SQL.

Что они означают, так это, безусловно, являются предикатами, не выражаемыми в SQL, поэтому не будут работать вообще.

Кроме того, вам нужно использовать их селекторы сортировки, и вы не можете сделать свои собственные, потому что они не знают, как преобразовать произвольные объекты в Какао в SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...