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 платформа никогда не ставит косую черту. Помогает ли это снять?