NSMetaDataQuery, установить пути setSearchScope рекурсивными?

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

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

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

2 ответа

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

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

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

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

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

Другие вопросы по тегам