Получение NSMetadataItem для локальных файлов в iOS App Sandbox

Я знаю, что на iOS вы можете использовать только NSMetadataQuery для файлов iCloud. Однако, согласно руководству Apple, вы все равно можете получить NSMetadataItem ища нужный файл вручную FileWrapper:

iOS позволяет выполнять поиск метаданных в iCloud для поиска файлов соответствующих файлов. Он предоставляет только интерфейс Objective C для запроса метаданных файла, NSMetadataQuery а также NSMetadataItem, а также поддерживает только область поиска, которая ищет iCloud.

В отличие от рабочего стола, песочница приложения iOS не доступна для поиска с использованием классов метаданных. Для поиска в изолированной программной среде вашего приложения вам нужно будет рекурсивно просматривать файлы в файловой системе изолированной программной среды, используя NSFileManager учебный класс. Как только найден соответствующий файл или файлы, вы можете получить к нему доступ тем способом, который вам требуется. Вы также можете использовать NSMedatataItem класс для получения метаданных для этого конкретного файла.

Тем не менее, я не мог найти способ получить NSMetadataItem из локального файла в песочнице iOS. Вы можете инициализировать NSMetadataItem из файла URL, но это доступно только в MacOS. FileManager также, похоже, не имеет API для извлечения NSMetadataItem от него.

Как я могу получить NSMetadataItem для локальных файлов в iOS App Sandbox?

0 ответов

Использовать NSMetadataQuery для запроса файлов iCloud добавьте наблюдателя для получения уведомления.

metaDataQuery.searchScopes = [NSMetadataQueryUbiquitousDocumentsScope, NSMetadataQueryUbiquitousDataScope]

NotificationCenter.default.addObserver(self, selector: #selector(self.metadataQueryDidFinishGathering),
name: NSNotification.Name.NSMetadataQueryDidFinishGathering, object: metaDataQuery)
metaDataQuery.start()
func metadataQueryDidFinishGathering(notification: NSNotification) {
    let result: [NSMedatataItem] = (notification.object as! NSMetadataQuery).results as! [NSMedatataItem]
    // handle result
}
Другие вопросы по тегам