Привет,

Недавно у меня был случай использования, когда я хотел сохранить несколько файлов в выбранном пользователем каталоге на macOS, но запрашивать у них доступ только один раз. Благодаря песочнице приложения это не так просто, как может показаться.

Для этого я предполагаю, что у вас есть практические знания Swift.

Запись одного файла, выбранного пользователем, выглядит примерно так:

let savePanel = NSSavePanel()
if (savePanel.runModal() == NSApplication.ModalResponse.OK) {
    let result = savePanel.url
    return result
} else {
    // handle user clicking "cancel"
}

Это довольно просто, и вы можете записать URL-адрес файла, который пользователь ввел в NSSavePanel.

Чтобы сохранить в каталог, мы сделаем что-то очень похожее, но вместо этого будем использовать NSOpenPanel:

let openPanel = NSOpenPanel()
// Set openPanel settings for just directories
openPanel.canChooseFiles = false
openPanel.canChooseDirectories = true
openPanel.allowedFileTypes = ["none"]
openPanel.allowsOtherFileTypes = false
if (openPanel.runModal() == NSApplication.ModalResponse.OK) {
    let result = openPanel.urls.first
    return result
} else {
    // handle user clicking "cancel
}

Теперь, пока вы держите здесь ссылку на result URL, вы сможете сохранять любые файлы в эту папку. Например, вот как вы можете создать несколько URL-адресов файлов внутри этой папки:

let file1 = folderURL.appendingPathComponent("file1.txt")
let file2 = folderURL.appendingPathComponent("file2.txt")
let file3 = folderURL.appendingPathComponent("file3.txt")

И так далее. Затем вы можете использовать эти file1 и т. Д. Для сохранения файлов в этой папке.

Надеюсь, вы кое-что узнали!

Хлопните в ладоши, если вам это помогло!

Лучший,

Горицвет