Spotlight NSMetaDataQuery с невидимыми элементами не обновляется автоматически

Исходный поиск работает нормально, но любые изменения невидимых элементов остаются незамеченными запросом.

Запрос можно запустить снова, и он найдет обновления.

Запрос не равен нулю, и уведомления Spotlight не были отменены.

Это ошибка или ожидаемое поведение?

Я проверял это несколько раз в нескольких разных проектах, и, похоже, это правда.


person Corey Floyd    schedule 28.09.2009    source источник


Ответы (1)


Одним из методов сохранения пакета документов является использование того факта, что Spotlight не импортирует метаданные из невидимых файлов или каталогов.

Добавлен акцент; цитата из страницы обзора Spotlight.

person Peter Hosey    schedule 28.09.2009
comment
Таким образом, конечным результатом в моем случае является то, что обновления для невидимых файлов не публикуются (что также объясняет длительное время поиска невидимых файлов). Есть ли способ изменить это поведение для определенных невидимых типов файлов, чтобы получать уведомления об обновлениях невидимых файлов (или мне не повезло)? - person Corey Floyd; 28.09.2009
comment
Или мое единственное решение - просто выполнить ручной поиск с заданным интервалом (не очень чистое решение)? - person Corey Floyd; 28.09.2009
comment
Spotlight не импортирует невидимые элементы, поэтому вы не можете использовать его для поиска невидимых элементов. Вместо этого вы должны иметь возможность использовать FSEvents; вам придется сканировать каталог самостоятельно, но, по крайней мере, вам не нужно делать это по таймеру опроса. - person Peter Hosey; 29.09.2009
comment
Spotlight на самом деле находит невидимые элементы, просто не отправляет уведомления об обновлениях. Это немного медленно, поэтому, как вы сказали, он не использует индекс. Возможно, это просто обычный поиск в файловой системе. Кажется, мне, возможно, придется установить интервал обновления, как вы сказали (что, я не могу себе представить, будет слишком плохим с точки зрения производительности). - person Corey Floyd; 29.09.2009
comment
Я не говорил интервал обновления; вы сказали интервал опроса. Вместо этого я предложил FSEvents, что означало бы, что вам не нужно будет проводить опрос. - person Peter Hosey; 29.09.2009