Предикат строки поиска

Я пытаюсь создать поисковый запрос с помощью NSMetaDataQuery и развертывания предиката, как показано ниже:

NSString * format = @"kMDItemDisplayName like[cd] %@";
NSPredicate * compPred = [NSPredicate predicateWithFormat:format,[NSString stringWithFormat:@"%@*",self.searchString]];

Проблема, с которой я столкнулся:

Предположим, у меня есть приложение по имени: Google Chrome.

Если я ищу «google» в качестве строки поиска, я могу получить результат, т. е. «Google Chrome», но если я ищу «chrome», я не могу найти «Google Chrome».

Точно так же, если строка поиска "Suhail", отображается результат "Suhail никого не ненавидит", но если строка поиска "ненавидит", результат ничего не показывает.

Еще один случай: предположим, что имя файла "faMee".

Я ищу "amee", ничего не получается. Я ищу «mee», ничего не получается, но в центре внимания, если я ищу «mee», он показывает мне файл «faMee».

Любые предложения, пожалуйста.


person Suhaiyl    schedule 02.11.2012    source источник


Ответы (2)


Вместо «нравится» в запросе используйте «содержит». Ознакомьтесь с документацией NSPredicate Apple и примерами запросов.

Мохсин

person Mohsin Khawas    schedule 02.11.2012
comment
Неизвестный тип NSComparisonPredicate, заданный для NSMetadataQuery (kMDItemDisplayName CONTAINS[cd] s), это то, что я получаю, если использую contains вместо like :( - person Suhaiyl; 02.11.2012

NSPredicate * compPred = [NSPredicate predicateWithFormat:format,[NSString stringWithFormat:@"*%@*",self.searchString]];

Попробуй это

person Akhil Shrivastav    schedule 06.05.2014