fileManger возвращает ошибку У меня нет прав для просмотра файлов в пакете - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь получить имена файлов из каталога.Теперь у меня есть два способа получить доступ к этому месту: один с помощью открытой панели, где я могу установить каталог, перетаскивая файлы из открытого окна «Открыть содержимое пакета», вручную выбрать все файлы (завершить выполнение).И второе - путем перебора URL.Второй способ не работает из-за:

The file “glyphs” couldn’t be opened because you don’t have permission to view it

Я могу просмотреть его из Finder, получить доступ из того же приложения через Open Panel ... Хм.Я создаю URL следующим образом:

print ("filename <\(filename)>, \(isDirectory ? "Directory" : "File")")
let urlf = url.appendingPathComponent(filename, isDirectory: isDirectory)
print( "\(urlf.isFileURL ? "this is a file" : "not a file:") \(urlf)" )

Выходные данные из этого кода:

filename <glyphs>, Directory
this is a file: file:///Users/lukasz/Documents/ClanTestDesignSpace/masters/ClnNew-BlackUltraExpandedHigh.ufo/glyphs/

URL в порядке, я сделал «копировать глифы как имя пути» в поисковике и сравнил оба: они 'точно так же, кроме последнего слеша.Но это больше не каталог this is a file.

В любом случае, я отправляю этот URL-адрес:

let fileURLs = try fileManager.contentsOfDirectory(at: urlf, includingPropertiesForKeys: nil)

Всегда возвращает ошибку.Я попытался изменить includingPropertiesForKeys: [URLResourceKey.nameKey] бот без эффекта.

Я проверил песочницу (User Selected File : read/write).Что я могу проверить больше?

1 Ответ

0 голосов
/ 11 октября 2018

Из изолированного приложения вы не можете программно получить доступ к файлам в любом каталоге.После того как вы включите User Selected File : read/write доступ в настройках Песочницы, вы можете использовать NSOpenPanel / NSSavePanel, чтобы позволить вашему пользователю выбирать файлы, к которым он хочет предоставить доступ, но без явного взаимодействия с пользователем вы не сможете получить доступ к папке ~/Documents, котораяВы пытались получить доступ.

...