Нет результатов в Spotlight при поиске по kMDItemPath - PullRequest
3 голосов
/ 27 августа 2009

Я пытаюсь создать запрос Spotlight, который ищет строку в пути к файлу (я хотел бы, чтобы он совпадал либо по имени файла, либо по имени любой из содержащихся в нем папок).

NSPredicate *predicateTemplate = [NSPredicate predicateWithFormat: @"kMDItemPath like[wcd] $SEARCH";
[query setPredicate: 
    [predicateTemplate predicateWithSubstitutionVariables:
        [NSDictionary dictionaryWithObject:searchingFor forKey:@"SEARCH"]
    ]
];
[query startQuery];

Всегда возвращает 0 результатов, даже если следующий:

NSPredicate *predicateTemplate = [NSPredicate predicateWithFormat: @"kMDItemDisplayName in[wcd] $SEARCH";

возвращает 1 или более результатов.Я тестирую это на MacOS X 10.5.8.

1 Ответ

9 голосов
/ 27 августа 2009

Квот документации:

kMDItemPath

Полный путь к файлу. Это значение этого атрибута можно получить, но нельзя использовать в запросе или для сортировки результатов поиска.

Ссылка

Это означает, что атрибут kMDItemPath может использоваться только с MDItem или NSMetadataItem для получения пути к уже найденному элементу. Его нельзя использовать с MDQuery или NSMetadataQuery в предикате запроса, который вы указываете для поиска файлов.

...