NSMetaDataQuery, установить пути setSearchScope рекурсивными? - PullRequest
0 голосов
/ 10 ноября 2010

В Objective-C я устанавливаю NSMetaDataQuery и задаю setSearchScope: для запроса для поиска в папке «Документы» определенного пользователя. Поиск работает, но не просматривает дерево каталогов, только поиск в папке «Документы».
Я пробовал подстановочные знаки, но не радости.

Вот в основном то, что я пытался, и это работает, за исключением того, что не выполняет поиск в каталоге документов:

query = [[NSMetadataQuery alloc] init];
[query setSearchScopes:[NSArray arrayWithObjects:@"/Users/username/Documents/",nil]];
[query setPredicate:[NSPredicate predicateWithFormat:@"(kMDItemFSContentChangeDate >= '$time.this_week')"]];
[query startQuery];

Ответы [ 2 ]

1 голос
/ 11 ноября 2010

Я думаю, что проблема в вашей строке формата NSPredicate. (Я хотел написать это!) По сути, ваш $time.this_week будет отлично работать в запросе Spotlight, но не как строка NSPredicate. Вы должны создать объект NSDate и передать его в строку запроса, например

[query setPredicate:[NSPredicate predicateWithFormat:@"(kMDItemFSContentChangeDate <= %@)", [NSDate date]]];

Вот соответствующие ссылки для вашей справки:

Сравнение строк запроса NSP-предиката и Spotlight
Синтаксис выражения запроса Spotlight
Синтаксис строки формата предиката

0 голосов
/ 10 ноября 2010

Я думаю, что вашей проблемой может быть косая черта на /Users/username/Documents/.При работе с путями в Objective-C платформа никогда не ставит косую черту.Помогает ли это снять?

...