Не удается получить доступ к содержимому URL-адреса каталога с областью безопасности

#swift #macos #directory #security-scoped-bookmarks

#быстрый #macos #каталог #область безопасности-закладки

Вопрос:

У меня есть следующий код для перечисления в каталоге. URL — адрес каталога передается в качестве параметра функции.

startAccessingSecurityScopedResource Возвращает true в начале функции, однако, когда я начинаю перечислять, он возвращает false все следующие файлы и подкаталоги в исходной папке, выбранной пользователем.

Это код для функции.

 func readDirectory(file: URL){    let localFileManager = FileManager()  let resourceKeys = Setlt;URLResourceKeygt;([.nameKey, .isDirectoryKey])  let directoryEnumerator = localFileManager.enumerator(  at: file,  includingPropertiesForKeys: Array(resourceKeys),  options: .skipsHiddenFiles  )!     for case let fileURL as URL in directoryEnumerator {  guard let resourceValues = try? fileURL.resourceValues(forKeys: resourceKeys),  let isDirectory = resourceValues.isDirectory,  let name = resourceValues.name else {  continue  }   } }  

Из приведенного выше кода file переданный параметр возвращает значение true для доступа. Однако в directoryEnumerator цикле у fileURL него нет доступа.

Есть ли причина, по которой я теряю доступ к подкаталогам и файлам внутри исходного каталога, к которым, по его словам, у меня есть доступ?

Комментарии:

1. Несвязанный: но Array(resourceKeys) это не имеет особого смысла, учитывая, что вы явно сделали resourceKeys Set . Вы можете просто использовать let resourceKeys: [URLResourceKey] = [.nameKey, .isDirectoryKey] и передать этот массив непосредственно в enumerator(at:includingPropertiesForKeys:options:) и resourceValues(forKeys:) .